我对 Rails 非常了解,我正在尝试从 URL 保存图像,在谷歌搜索后我找到了我安装的 Carrierwave gem。但我不知道如何继续。我也在使用 Backbone(我对它也很基础)。
到目前为止,我已经创建了一个应用程序,用户可以在输入字段中输入电影名称,然后显示结果列表。
我的电影搜索 View ,
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
然后,我的搜索结果 View 会在搜索结果模板中呈现电影搜索 View
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 %>
这就是 Backbone。下一步是存储数据。 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 Controller 。它具有以下创建定义
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 页面上的文档,但发现很难找到我需要做的事情。
最佳答案
假设这是您要托管的图像的路径
"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
关于javascript - 使用 Carrierwave 保存 URL 中的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26655390/