【问题标题】:Helper function for dynamic routes动态路由的辅助函数
【发布时间】:2013-10-17 01:10:48
【问题描述】:

有人可以帮我创建一个辅助函数,以便动态获取控制器操作路径和名称。

<% if action_name.eql? "show" %>
  <li><%= link_to '<i class="icon-fixed-width icon-pencil"></i> Edit'.html_safe, edit_contact_path(@contact) %></li>
  <li><%= link_to '<i class="icon-fixed-width icon-trash"></i> Delete'.html_safe, @contact, method: :delete, data: { confirm: 'Are you sure?' } %></li>
<% end %>

基本上,我想为这段代码创建一个助手:

edit_contact_path(@contact)

我希望能够为“联系人”插入任何控制器名称,以便我可以在整个网站中动态使用上面的较大代码段。

谢谢!

【问题讨论】:

  • 对象是在某个帮助器中定义的,还是内置的 Rails 帮助器?
  • object 只是一个变量,在您的情况下它将是 @contact

标签: ruby-on-rails ruby-on-rails-4


【解决方案1】:

只需使用[:edit, @contact] 而不是显式方法名称。

<li><%= link_to '.... Edit', [:edit, @contact] %></li>

用您想要的任何变量替换@contact。我发现数组语法更具可读性,并且在任何地方都喜欢它。比较:

 = link_to "Edit", edit_user_post_comment_path(@user, @post, @comment)

 = link_to "Edit", [:edit, @user, @post, @comment]

【讨论】:

  • 非常好,正是我需要的。非常感谢。
  • 我也可以将它用于“新”吗?
  • 是的,不过,没有太多需要。对于新记录,路径只是 [@record] 和一个 POST 请求。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-30
  • 1970-01-01
  • 2019-02-19
  • 1970-01-01
相关资源
最近更新 更多