我有一条命名路线,如下所示:
map.with_options :path_prefix => '/:username', :controller => 'questions' do |q|
q.question '/:id', :action => 'show', :conditions => { :method => :get }
end
现在生成一个我必须编写的特定问题的URL
question_path( :id => @question.id, :username => @question.user.username )
这非常麻烦。我想能够写
question_path(@question)
# or even
link_to 'Question', @question
并获得所需的结果。
这怎么可能?我假设我必须覆盖默认帮助器来实现这一点。
答案 0 :(得分:1)
它接缝就像你想要一个用户/问题的嵌套路线。
map.resource :users do |user|
map.resources :question, :shallow => true
end
这样,您可以使用/ users / 1 / questions访问用户问题,但仍然可以访问/ questions / 1来解决特定问题。
答案 1 :(得分:1)
您可以使用question_path(@question.user.username, @question)
或者你可以编写辅助方法:
def user_question_path(question)
question_path(question.user.username, question)
end
并使用user_question_path(@question)