我在Rails中有這個幫助函數,我想知道user_path
可以以某種方式從@user
派生出來,它作爲參數傳遞給函數。眼下,user_path
在我的功能被硬編碼是不漂亮:如何從Rails助手函數中的對象派生路徑?
def link_to_next(entry)
link_to ">>", user_path(entry.next)
end
這是我如何使用輔助函數:
<%= link_to_next(@user) %>
感謝您的幫助!
我在Rails中有這個幫助函數,我想知道user_path
可以以某種方式從@user
派生出來,它作爲參數傳遞給函數。眼下,user_path
在我的功能被硬編碼是不漂亮:如何從Rails助手函數中的對象派生路徑?
def link_to_next(entry)
link_to ">>", user_path(entry.next)
end
這是我如何使用輔助函數:
<%= link_to_next(@user) %>
感謝您的幫助!
你可以使用用來定義Rails的3.2.13的form_for
方法,該方法ActiveModel::Naming.param_key
:
@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
這很好,非常感謝! – Tintin81
嗨,我可以問一下,你是如何得出這些知識的?你研究過這個問題嗎,還是你對Rails的內部很熟悉? –
<%= url_for( @user)%> –
我想邁克爾的意思是'url_for(entry.next)'。比下面的解決方案清潔得多。 –