javascript - 使用 Carrierwave 保存 URL 中的图像

标签 javascript ruby-on-rails ruby backbone.js carrierwave

我对 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/

相关文章:

javascript - 使用 jquery 累积或删除小数

c# - 如何从后面的 c# 代码调用 javascript 函数

javascript - 检索最接近插入符号位置的节点

ruby-on-rails - rails : How to validate data manually using a given model?

ruby-on-rails - 在 Rails 引擎规范中使用正确的 url_for 方法

ruby - 尝试使用 zlib 在 vi​​sual studio 上构建 ruby

javascript - 连接点而不交叉线

ruby-on-rails - 未定义的局部变量或方法 `user'

ruby - RUBY 初学者 - 数组问题

ruby - 使用 Ruby 中的过滤从数组中删除重复的数组项