在Rails中动态引用控制器操作

时间:2014-04-04 18:52:13

标签: ruby-on-rails

我正在尝试在页面内显示动态链接列表,如下所示:

<% locations = get_locations() %>

<ul>
  <% locations.each { |loc| %>
      <li><%= link_to loc['name'], show_location_path(:id => loc['id']) %></li>
  <% } %>
</ul>   

此代码出现500服务器错误。

我通过以下方式验证了地址[&#39; id&#39;]和地址[&#39;名称&#39;]是否有效:

<ul>
  <% locations.each { |loc| %>
      <li><%= loc['name'] %></li>
      <li><%= loc['id'] %></li>
  <% } %>
</ul>   

这不会导致500错误,并且列表正确显示。有任何想法吗?

答案:

在视图中:

  • &lt;%= link_to loc [&#39; name&#39;],{:controller =&gt; &#39; location&#39;,:action =&gt; &#39; show&#39;,:id =&gt; loc [&#39; id&#39;]}%&gt;
  • 并在控制器中:

    PARAMS [:ID]

    2 个答案:

    答案 0 :(得分:1)

    假设您将路线定义为resources :locations

    然后,要为显示操作创建链接,请使用以下命令:

    <ul>
      <% locations.each do |loc| %>
          <li><%= link_to loc['name'], location_path(loc['id']) %></li>
      <% end %>
    </ul> 
    

    答案 1 :(得分:-2)

    我不确定语法是否正确,

    show_location_path(:id => loc['id']) 
    

    不应该吗?

    show_location_path(loc['id'])