2011-01-08 2 views
1

У меня есть модель под названием appointment, и я хочу изменить способ работы новой страницы. Когда пользователь нажимает на определенный час слот на календаре, я хочу, чтобы пользователь будет попадать на страницу с URL, как это:Пользовательские маршруты Rails

appointment/new/hour/10 

Это бы пользователя к «новой» страницы и время назначение будет предварительно заполнено в 10:00.

Я знаком с маршрутизацией symfony, но я нахожу Rails-маршрутизацию немного запутанной. В частности, я не знаю, как написать мой вызов функции link_to таким образом, чтобы он дал мне URL-адрес, подобный приведенному выше.

У меня есть некоторые из FM, но я не нашел места, которое проходит через то, что я хочу сделать. Если кто-то может объяснить, как делать то, что я пытаюсь сделать, или просто указать мне на соответствующую документацию, это было бы потрясающе.

ответ

5

В вашем routes.rb вы можете создать маршрут, такие как:

# Rails 3 
match 'appointment/new/hour/:hour' => "appointments#new", :as => :new_appointment_with_time 

# Rails 2 
map.new_appointment_with_time 'appointment/new/hour/:hour', :controller => "appointments", :action => "new" 

Затем, вы можете использовать его в ссылках:

link_to "10am", new_appointment_with_time_path(:hour => 10) 

В контроллере, вы можете получить значение и сделайте свой новый экземпляр для его использования, используя params[:hour]:

@appointment = Appointment.new(:hour => params[:hour]) 
+0

Спасибо за подробный ответ! Это сработало отлично. Интересно, что время в раскрытии моей формы отключается через определенное количество часов, но я полагаю, что это отдельная проблема. –