自定义Rails路由

时间:2011-01-08 16:21:35

标签: ruby-on-rails routing

我有一个名为appointment的模型,我想改变“新”页面的工作方式。当用户点击日历上的某个小时位置时,我希望用户被带到包含以下URL的页面:

appointment/new/hour/10

这会将用户带到“新”页面,预约时间将在上午10:00预先填充。

我熟悉symfony路由,但我发现Rails路由有点令人困惑。具体来说,我不知道如何编写我的link_to函数调用,它会给我一个类似上面的URL。

我已经获得了一些FM,但我没有找到一个超出我想做的事情的地方。如果有人可以解释如何做我正在尝试做的事情,或者只是简单地指出相关的文档,那就太棒了。

1 个答案:

答案 0 :(得分: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])