0

次のような名前付きルートがあります。

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

目的の結果が得られます。

これはどのように可能ですか?これを実現するには、デフォルトのヘルパーを上書きする必要があると思います。

4

2 に答える 2

1

ユーザー/質問のネストされたルートが必要なように見えます。

map.resource :users do |user|
  map.resources :question, :shallow => true
end

このようにして、/ users / 1 / questionsを使用してユーザーの質問にアクセスできますが、特定の質問に/ questions/1にアクセスすることはできます。

于 2010-06-02T19:04:51.200 に答える
1

使用できますquestion_path(@question.user.username, @question)

または、ヘルパー メソッドを記述できます。

  def user_question_path(question)
    question_path(question.user.username, question)
  end

そして使うuser_question_path(@question)

于 2010-06-02T21:27:09.970 に答える