Rails сложная маршрутизация, более простые именованные помощники маршрутов - PullRequest
0 голосов
/ 02 июня 2010

У меня есть именованный маршрут, подобный следующему:

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

и получите желаемый результат.

Как это возможно? Я предполагаю, что мне нужно переписать помощника по умолчанию для достижения этой цели.

Ответы [ 2 ]

1 голос
/ 03 июня 2010

Вы можете использовать question_path(@question.user.username, @question)

Или вы можете написать вспомогательный метод:

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

И использовать user_question_path(@question)

1 голос
/ 02 июня 2010

Похоже, что вы хотите использовать вложенный маршрут для пользователей / вопросов.

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

Таким образом, у вас есть доступ к пользовательским вопросам с помощью / users / 1 / questions, но вы все равно можете получить доступ к вопросам/ 1 к конкретному вопросу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...