【发布时间】:2012-04-02 06:40:34
【问题描述】:
我在使用 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});
}
});
【问题讨论】:
-
据我所知,您对 link_to 的使用是正确的。但是,错误信息表明问题出在路由上,而不是在链接上(这解释了link_to生成的错误url)。尝试运行
rake routes并确认您想要的路线在那里。我总是使用符号来表示路线,所以请尝试将post 'iframize'切换为post :iframize。
标签: ruby-on-rails ruby-on-rails-3 model-view-controller post link-to