2014-10-30 92 views
0

我是非常基本的Rails,我嘗試從URL中保存圖像,搜索後發現我已安裝了Carrierwave gem。但我不知道如何繼續。我也使用Backbone(我也很基本)。使用Carrierwave從URL保存圖像

到目前爲止,我創建了一個應用程序,用戶可以在輸入字段中輸入電影名稱,然後顯示結果列表。

我moviesearch觀點,

events: 
    "keyup input": "doSearch" 

doSearch: (e) -> 
    @collection.setQuery $(e.currentTarget).val() 
    @collection.fetch() 
    $('.autocomplete-results').show() 

doSearch功能被炒魷魚它轉到moviesearch收集,

class Movieseat.Collections.Moviesearch extends Backbone.Collection 

    url: -> "http://api.themoviedb.org/3/search/movie?api_key=a8f7039633f2065942cd8a28d7cadad4&query=#{@query}" 

    setQuery: (q) -> 
    @query = q 
    return 

    parse: (response) -> 
    return response.results 

這導致這樣的JSON文件,

http://api.themoviedb.org/3/search/movie?api_key=a8f7039633f2065942cd8a28d7cadad4&query=star%20war 

然後,我的searchresult視圖呈現海中的moviesearch視圖rchresult模板

template: JST['movieseats/searchresult'] 

initialize: -> 
    @collection.on('add', @render, this) 
    return 

render: -> 
    $(@el).html(@template(movie: @collection)) 
    this 

的信息搜索結果的模板,

<% for movie in @movie.models : %> 
    <li> 
     <img src="http://image.tmdb.org/t/p/w500/<%= movie.get('poster_path')%>"></img> 
     <span class="movie-title"><%= movie.get('title') %></span> 
     <p class="releaste_date"><%= movie.get('release_date') %></p> 
     <p class="addmovie">Add movie</p> 
    </li> 
<% end %> 

這一切都是骨幹。以下步驟是存儲數據。 addEntry函數將變量movie_title保存到我的Rails模型中。

addEntry: (e) -> 
    movie_title = $(e.target).parent().find('.movie-title').text() 
    @collection.create title: movie_title 

此函數查找在此模板的.movie-title文本,

<% for movie in @movie.models : %> 
    <li> 
     <img src="http://image.tmdb.org/t/p/w500/<%= movie.get('poster_path')%>"></img> 
     <span class="movie-title"><%= movie.get('title') %></span> 
     <p class="releaste_date"><%= movie.get('release_date') %></p> 
     <p class="addmovie">Add movie</p> 
    </li> 
<% end %> 

我有一個名爲movies_controller Rails控制器。這有以下定義創建

def create 
    @movie = Movie.new(movie_params) 
    @user = current_user 
    user_id = @user[:id] 
    @movie[:user_id] = user_id 

    respond_to do |format| 
    if @movie.save 
     format.html { redirect_to @movie, notice: 'Movie was successfully created.' } 
     format.json { render json: @movie, status: :created, location: @movie } 
    else 
     format.html { render action: "new" } 
     format.json { render json: @movie.errors, status: :unprocessable_entity } 
    end 
    end 
end 

正如你可以看到我有一個<img src="http://image.tmdb.org/t/p/w500/<%= movie.get('poster_path')%>"></img>這是我想在我的Rails模型保存圖像。

我該如何從這裏出發?我發現以下post和驗證碼,

uploader = ImageUploader.new 
uploader.download! some_remote_url 
uploader.store! 

但在該職位沒有發佈,所以我不知道如何實現我的這個項目代碼文檔。另外我查看了Git頁面上的文檔,但是我發現很難找到我需要做的事情。從遙遠而明亮的網址

+0

該文檔實際上是[非常好](https://github.com/carrierwaveuploader/carrierwave) – 2014-10-30 14:17:49

+0

更新了問題以便更好地理解。 – 2014-10-30 14:22:34

+0

你有沒有在你的'電影'模型中定義和安裝上傳器? – 2014-10-30 14:32:38

回答

0

加載圖像是非常簡單的
在這個railscasts

MODEL.remote_image_url = 'http:...jpg'

<%= form_for @painting, :html => {:multipart => true} do |f| %>  
    <p> 
    <%= f.label :name %><br /> 
    <%= f.text_field :name %> 
    </p> 
    <p> 
    <%= f.file_field :image %> 
    </p> 
    <p> 
    <%= f.label :remote_image_url, "or image URL" %> 
    <%= f.text_field :remote_image_url %> 
    </p> 
    <p><%= f.submit %></p> 
<% end %> 
+0

在這個例子中,用戶可以在文本字段中輸入圖像的url?我正在尋找一種將圖像全部置入DOM的方式。 – 2014-10-30 16:25:21

1

看看假設這是通向你想舉辦

"http://image.tmdb.org/t/p/w500/<%= movie.get('poster_path')%>" 
圖像

你應該可以做點像

def create 
    @movie = Movie.new(movie_params) 
    @movie.remote_image_url = "http://image.tmdb.org/t/p/w500/#{@movie.get('poster_path')}" 
    #rest of code 
end 
+0

好的。我想我快到了。我是否需要在模板文件中創建對'remote_image_url'的引用,其中呈現圖像url路徑?我想是這樣。但是,這看起來如何?我想我可以用圖像的值和它的標籤創建一個不可見的輸入域。但我不認爲這是做到這一點的方法。 – 2014-10-30 16:57:12