Link_to remote => true, вызывающий странные проблемы с маршрутизацией, Rails 3 - PullRequest
0 голосов
/ 02 апреля 2012

У меня проблемы с удаленной отправкой сообщения link_to на другой контроллер ... Результат не совсем то, что я ожидаю ..

У меня есть это в node_content.html.erb:

<% @node.videos.each do |vid| %>
 <div id="vid_vid"><%= link_to image_tag("http://img.youtube.com/vi/#{vid.content}/1.jpg"),  :controller => 'videos', :action => "iframize", :video_id => vid.id,  :method => :post,  :remote => true %></div>

 <% end %>

И у меня есть это в videos_controller:

  def iframize
   @video = Video.find(params[:video_id])
   respond_to do |format|
     format.js
   end
 end

И это в маршрутах:

 resource :videos do
  collection do
   post 'iframize'
  end
end

Проблема в том, что когда я нажимаю на ссылку, это приводит меня к

http://localhost:3000/videos/iframize?method=post&video_id=20

и я получаю

Couldn't find Video with id=iframize

Я просмотрел десятки различных примеров, и они, кажется, рекомендуют вышеупомянутое, но это не работает .. Что я делаю не так?

Любой вклад приветствуется!

Спасибо!

EDIT:

Я попробовал этот подход с помощью функции jquery, и она вроде работала (конечно, только для первого видео в цикле):

<% @node.videos.each do |vid| %>
  <%=  image_tag("http://img.youtube.com/vi/#{vid.content}/1.jpg", :id  => 'img_div') %>
<div id="vid_vid"> <%= vid.id %></div>
<% end %>



$('#img_div').on({
  'click': function() {
   var vid_id = document.getElementById("vid_vid").innerHTML;
   $.post("/videos/iframize/", {video_id: vid_id}); 
  }
 });

Ответы [ 2 ]

0 голосов
/ 02 апреля 2012

Вам необходимо различать параметры URL, html options.so использовать

<%= link_to image_tag("http://img.youtube.com/vi/#{vid.content}/1.jpg"), 
{ :controller => 'videos', :action => "iframize", :video_id => vid.id },
{ :method => :post,  :remote => true} %>
0 голосов
/ 02 апреля 2012

Есть ли у вас rails_ujs, включенный через jquery_ujs в файл assets / application.css

= link_to image_tag("http://img.youtube.com/vi/#{vid.content}/1.jpg"), "url_path", :method => :post,  :remote => true

Преобразуйте следующее в путь рельсов: например, iframeize_videos_path (генерируется с помощью rake routes)

:controller => 'videos', :action => "iframize", :video_id => vid.id,
...