Rails link_to工作很奇怪

时间:2012-04-19 20:12:59

标签: ruby-on-rails link-to

我在部分(update_dashboard)中设置了link_to,看起来像这样

link_to "Link", hash, {:url => {:controller => "results", :action => "update_report"}},     :remote => true

'hash'是我传递给控制器​​的一组输入。

可以看出。我希望“链接”映射到“结果”控制器中的“update_report”操作。

但是,我发现在页面渲染后,当我点击链接时,它只是在新页面中显示部分。

我进入了Firebug,这就是链接的呈现方式

<a url="{:controller=>"results", :action=>"update_report"}" href="/test/update_dashboard?branch=xxxx&brand=xx&end_time=2012-02-29+22%3A59&repo=xxxx%2Fxx&start_time=2012-02-17+18%3A20">Link</a>

为什么href指向/ test / update_dashboard?为什么不采用我为控制器属性提供的参数

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

尝试,

<%= link_to "Link", {
        :controller => "results", 
        :action => "update_report", 
        :hash => hash,
        :remote => true } %>

如果您没有使用rails当前版本,请尝试使用

link_to_remote "link", :update => "results",
:url => { :controller => "results", :action => "update_report", :hash => hash }

Reference

答案 1 :(得分:0)

https://github.com/rails/rails/blob/master/actionpack/lib/action_view/helpers/url_helper.rb#L236

查看link_to方法来源

由于'hash'变量是一个带有键和值的真实哈希,你需要将它与url哈希合并,如下所示:

<% hash = { :param1 => "value1", :param2 => "value2"}  %>
<%= link_to 'MyLink', { :controller => "questions", :action => "index" }.merge(hash), :id => "link_id", :class => "link_class" %>

它会生成您想要的链接:

<a href="/questions?param1=value1&amp;param2=value2" class="link_class" id="link_id">MyLink</a>