我在使用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
我查看了几个不同的例子,他们似乎推荐了上述内容,但它不起作用..我做错了什么?
任何输入都非常感谢!
谢谢!
编辑:
我尝试了这种方法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 :(得分:0)
你是否在assets / application.css文件中通过jquery_ujs包含了rails_ujs
= link_to image_tag("http://img.youtube.com/vi/#{vid.content}/1.jpg"), "url_path", :method => :post, :remote => true
将以下内容转换为rails路径:例如iframeize_videos_path(通过rake routes
生成)
:controller => 'videos', :action => "iframize", :video_id => vid.id,
答案 1 :(得分:0)
您需要区分网址选项,html options.so use
<%= 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} %>