0

我在 Rails 中有这个辅助函数,我想知道是否user_path可以以某种方式派生@user它作为参数传递给函数。现在,user_path在我的函数中被硬编码,这并不漂亮:

def link_to_next(entry)
  link_to ">>", user_path(entry.next)
end

这就是我使用辅助函数的方式:

<%= link_to_next(@user) %>

谢谢你的帮助!

4

1 回答 1

3

您可以使用用于在 Rails 3.2.13ActiveModel::Naming.param_key中定义方法的方法:form_for

@foo = User.new
# =>  #<User id: nil, email: nil>
ActiveModel::Naming.param_key(@foo)
# => "user"

现在你可以link_to_next这样定义:

def link_to_next(entry)
  next_entry = entry.next
  path_method = "#{ActiveModel::Naming.param_key(next_entry)}_path"
  link_to('>>', send(path_method, next_entry))
end
于 2013-07-16T10:48:16.093 回答