2014-10-30 3 views
0

Я довольно простой с Rails, и я пытаюсь сохранить изображение из URL-адреса, после поиска в Интернете я нашел драгоценный камень Carrierwave, который я установил. Но я не уверен, как действовать дальше. Я также использую Backbone (что я также довольно простой).Сохраните изображение с URL-адреса с помощью Carrierwave

До сих пор я создал приложение, в котором пользователи могут вводить moviename в поле ввода, которое затем показывает список результатов.

Мой 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 

Мой поисковый просмотр затем отображает просмотр фильмов в море rchresult шаблон

template: JST['movieseats/searchresult'] 

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

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

Шаблон SearchResult,

<% 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. Это имеет следующее определение создать

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) –

+0

Обновлен вопрос для лучшего понимания. –

+0

У вас есть пользователь, установленный и установленный на вашей модели «Кино»? –

ответ

0

загрузки изображений из Remore URLs действительно просто
Взгляните на этот 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. –

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-адреса изображения? Наверное, так. Но как это будет выглядеть? Думаю, я мог бы создать невидимое поле ввода со значением изображения и ярлыком для него. Но я не думаю, что это способ сделать это. –

Смежные вопросы