Link_to remote =>真正导致奇怪的路由问题,Rails 3

时间:2012-04-02 06:40:35

标签: ruby-on-rails ruby-on-rails-3 model-view-controller post link-to

我在使用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}); 
  }
 });

2 个答案:

答案 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} %>