link_to_remote在Haml中不生成正确的URL

时间:2010-05-27 07:29:50

标签: ruby-on-rails routes

在Haml,我一直试图让以下link_to_remote呼叫工作。它是从/questions/new视图调用的。

#{link_to_remote image_tag('x.png'), :url => {:controller => 'questions', :action => 'remove_tag_from_cart'}}

我尝试了以下变化。

#{link_to_remote image_tag('x.png'), :url => {:controller => :questions, :action => :remove_tag_from_cart}}
#{link_to_remote image_tag('x.png'), :controller => 'questions', :action => 'remove_tag_from_cart'}
#{link_to_remote image_tag('x.png'), :controller => :questions, :action => :remove_tag_from_cart}

在每种情况下,我都会收到以下链接:/questions/new#。我不确定为什么!

我在routes.rb中也有以下内容,认为这是问题......

map.connect ':controller/remove_tag_from_cart', :action => 'remove_tag_from_cart'

2 个答案:

答案 0 :(得分:0)

map.connect ':controller/remove_tag_from_cart', :controller=>:controller , :action => 'remove_tag_from_cart'

重启服务器并检查。

EDITED

link_to_remote用于ajax请求。所以当你悬停链接时,你会得到你的网址#,但当你点击它时,它会调用ajax请求到你提供的网址。我在下面解释。

<%= link_to_remote image_tag('x.png'), :url => {:controller => 'questions', :action => 'remove_tag_from_cart'}} %>

当您使用它检查生成的HTML时,您将获得

<a onclick="new Ajax.Request('/questions/remove_tag_from_cart', {asynchronous:true, evalScripts:true}); return false;" href="#">
   <img src="/images/x.png" alt="X"/>
 </a> 

您可以在生成的html中看到 href =“#”

注意:如果你不想要它,你必须使用link_to。

答案 1 :(得分:0)

如果/ questions / new#是浏览器状态栏中显示的内容,则再次检查页面源,因为link_to_remote生成javascript ajax请求,实际链接隐藏在onclick属性中