0

У меня возникли некоторые проблемы с link_to удаленной отправки сообщения в другой контроллер ... В результате не совсем то, что я ожидаю ..Link_to дистанционного => правда вызывает странные проблемы маршрутизации, Rails 3

У меня есть это 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}); 
    } 
}); 
+0

Насколько я могу сказать, ваше использование link_to правильно. Однако сообщение об ошибке указывает на то, что проблема заключается в маршрутизации, а не в ссылке (что объясняет неправильный URL-адрес, созданный с помощью link_to). Попробуйте запустить «рейк-маршруты» и убедитесь, что маршрут, который вы хотите, есть. Я всегда использую символы для маршрутов, поэтому попробуйте переключить 'post 'iframize'' на' post: iframize'. – Faisal

ответ

0

Есть ли у вас rails_ujs включены через jquery_ujs в активах/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, 
+0

вот мои маршруты рейка: iframize_videos POST /videos/iframize(.format) {: action => "iframize",: controller => "videos"}, когда я помещаю «iframize_videos_path», я попадаю на localhost/nodes/iframize_videos – Stpn

+0

О, и да, у меня есть jquery_ujs в application.js – Stpn

+0

Кстати, вам нужно сделать = link_to image_tag ('path'), iframize_videos_path,: remote => true,: video_id => vid.id,: method =>: post – Sairam

0

Вам необходимо дифференцировать варианты 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

Это приводит меня к показу действия видео ... – Stpn

+0

Я обновил ответ –

+0

тот же эффект - «не могу найти видео с id = iframize» .. – Stpn

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