2008-12-02 3 views
4

я борюсь здесь с проблемой: У меня есть контроллер вопросов который имеет действие нового. Всякий раз, когда мне нужно создать новый вопрос, я печатаюрельсов маршрутизации изменить действие контроллера

/questions/new 

Какие изменения в routes.rb я должен сделать, чтобы изменить URI для

/questions/ask 

Спасибо. Клапан.

ответ

7

Попробуйте это:

map.ask_question '/questions/ask', :controller => 'questions', :action => 'new' 

Тогда вы будете иметь именованный маршрут и вы можете:

link_to "Ask a question", ask_question_path 
+0

Привет, Кристиан. Это позволит мне ввести http: // mySite/questions/ask и перейти к ? Обратите внимание, что я пытаюсь использовать маршрутизацию RESTful. Спасибо, Клапан. – Valentin 2008-12-02 10:52:17

0

Какая версия рельсов?

Как правило, маршрут по умолчанию должен улавливать что-то вроде /: controller /: action, поэтому вы можете просто создать метод ask в своем контролере вопросов. Взгляните на документацию api для named_route и map_resource, если вам нужно что-то более гладкое для работы.

+0

Здравствуйте, Джейсон. Рельсы 2.2.2. Я пытаюсь использовать RESTful-маршрутизацию, поэтому я удалил по умолчанию два маршрута (контроллер/действие/id и другое). Я бы ожидал чего-то вроде map.resources: questions,: action => {: new =>: ask} если возможно. Спасибо. – Valentin 2008-12-02 09:52:32

5

Если вы используете RESTful маршруты, может быть, вы хотели бы использовать для map.resources ваш вопросы.

Чтобы переименовать URLs действий, вы можете сделать это:

map.resources :questions, :path_names => { :new => 'ask', :delete => 'withdraw' }

(я добавил удалить ради примера)

Смежные вопросы