【问题标题】:Rails link_to not working correctlyRails link_to 无法正常工作
【发布时间】:2017-11-14 17:04:46
【问题描述】:

我试图在我的桌子上放一个link_to 以转到show 操作,但它将URL 设置为/admin/vulnerabilities.object_id 而不是/admin/vulnerabilities/object_id 我的索引视图是:

...
<% @vulnerabilities.each do |vulnerability| %>
  <tr>
    <td><%=link_to vulnerability.id, admin_vulnerabilities_path(vulnerability) %></td>
    <td><%= vulnerability.type %></td>
    <td><%=h truncate(vulnerability.description, :length => 80) %></td>
    <td><%= vulnerability.published %></td>
    <td><%= vulnerability.modified %></td>
    <td><%= link_to vulnerability.href, vulnerability.href , target: :_blank %></td>
  </tr>
<% end %>
...

我有一个show.html.erb 模板设置,我的show 操作如下:

def show
  @vulnerabilities = Vulnerability.find(params[:id])
end

据我所见,这应该可以,但是当单击链接时,它只会重定向到索引页面,有效地刷新它并且根本不使用我的显示页面。

【问题讨论】:

  • 如果您将routes.rb 文件的相关部分添加到您的问题中会有所帮助,但我推测问题在于admin_vulnerabilities_path(vulnerability) 应该是admin_vulnerability_path(vulnerability)
  • @jvillian 知道这一点,我认为您可能还想将显示视图中的变量重命名为单数 @vulnerability 以避免混淆。仅供参考,从 Rails 5 开始,您可以使用 rake routes -g vulnerabilityrake routes -g vulnerabilities 检查路由。
  • 是的,明白了!我忘记了单数路径,仍然对单/复数用法感到头疼!
  • 作为结束循环的答案发布。随时为未来的人们投票/接受。

标签: ruby-on-rails ruby-on-rails-5


【解决方案1】:

如果您将 routes.rb 文件的相关部分添加到您的问题中会有所帮助,但我推测问题在于 admin_vulnerabilities_path(vulnerability) 应该是 admin_vulnerability_path(vulnerability)

此外,如 cmets 中所述,最好使用 @vulnerability 作为您的实例名称,因为 find 将返回一条记录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-29
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-24
    • 2011-08-30
    相关资源
    最近更新 更多