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