【问题标题】:Dynamically referencing a controller action in Rails在 Rails 中动态引用控制器动作
【发布时间】:2014-04-04 18:52:13
【问题描述】:

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

<% locations = get_locations() %>

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

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

我通过以下方式验证了 loc['id'] 和 loc['name'] 是否有效:

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

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

答案:

在视图中:

  • 'location', :action => 'show', :id => loc['id']} %>
  • 在控制器中:

    参数[:id]

    【问题讨论】:

    • 如果你尝试
    • loc['id'] %>
    • 你有什么?
  • @EastsideDeveloper 请分享您收到此错误时生成的服务器日志。
  • 你想链接哪些路线?
  • 只产生错误日志: Completed 500 Internal Server Error in 526ms。不是很有帮助
  • 收件人:@macario:我想链接的路线列在我的问题中:show_location_path
  • 标签: ruby-on-rails


    【解决方案1】:

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

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

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

    【讨论】:

    • 人们开始写 rails 并没有完成教程.. 我想.. :-) 这就是产生这些问题的方式..
    • 这实际上是行不通的。它生成以下形式的链接:/location.1 而不是 /location/1。回到广场1
    【解决方案2】:

    我不确定语法是否正确,

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

    不应该吗?

    show_location_path(loc['id'])
    

    【讨论】:

    • 我应该可以传递一个参数。如果不是id怎么办?我将如何传递参数?
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签