2013-07-16 95 views
0

我在Rails中有這個幫助函數,我想知道user_path可以以某種方式從@user派生出來,它作爲參數傳遞給函數。眼下,user_path在我的功能被硬編碼是不漂亮:如何從Rails助手函數中的對象派生路徑?

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

這是我如何使用輔助函數:

<%= link_to_next(@user) %> 

感謝您的幫助!

+0

<%= url_for( @user)%> –

+0

我想邁克爾的意思是'url_for(entry.next)'。比下面的解決方案清潔得多。 –

回答

3

你可以使用用來定義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 
+0

這很好,非常感謝! – Tintin81

+0

嗨,我可以問一下,你是如何得出這些知識的?你研究過這個問題嗎,還是你對Rails的內部很熟悉? –