使用Carrierwave从URL保存图像
我是非常基本的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页面上的文档,但是我发现很难找到我需要做的事情。从遥远而明亮的网址
加载图像是非常简单的
在这个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 %>
在这个例子中,用户可以在文本字段中输入图像的url?我正在寻找一种将图像全部置入DOM的方式。 – 2014-10-30 16:25:21
看看假设这是通向你想举办
"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
好的。我想我快到了。我是否需要在模板文件中创建对'remote_image_url'的引用,其中呈现图像url路径?我想是这样。但是,这看起来如何?我想我可以用图像的值和它的标签创建一个不可见的输入域。但我不认为这是做到这一点的方法。 – 2014-10-30 16:57:12
该文档实际上是[非常好](https://github.com/carrierwaveuploader/carrierwave) – 2014-10-30 14:17:49
更新了问题以便更好地理解。 – 2014-10-30 14:22:34
你有没有在你的'电影'模型中定义和安装上传器? – 2014-10-30 14:32:38