Ruby on rails 路由错误:将参数传递给控制器中的操作
我的模型摘要:用户有许多约会。预约有很多预约。预约属于预约 我正在尝试链接到一个特定视图(称为“用户预订”),该视图列出了特定约会的所有预订。以下是我尝试过的:Ruby on rails 路由错误:将参数传递给控制器中的操作,ruby-on-rails,routing,parameter-passing,rails-routing,link-to,Ruby On Rails,Routing,Parameter Passing,Rails Routing,Link To,我的模型摘要:用户有许多约会。预约有很多预约。预约属于预约 我正在尝试链接到一个特定视图(称为“用户预订”),该视图列出了特定约会的所有预订。以下是我尝试过的: <% current_user.appointments.each do |appointment|%> <%= link_to "view all bookings", users_bookings_appointment_booking_path(appointment)%> <%end%>
<% current_user.appointments.each do |appointment|%>
<%= link_to "view all bookings", users_bookings_appointment_booking_path(appointment)%>
<%end%>
其他信息:
路线:
resources :appointments do
resources :bookings do
get 'users_bookings', :on => :collection
end
end
预订控制器创建操作:
def create
@appointment = Appointment.find(params[:booking][:appointment_id])
@booking = @appointment.bookings.new(params[:booking])
预订控制器用户\u预订操作:
def users_bookings
@appointment = Appointment.find(params[:booking][:appointment_id])
@bookings = @appointment.bookings.all
end
用户\u预订视图:
<% @bookings.each do |booking| %>
<td><%= booking.appointment_date%></td>
<td><%= booking.start_time %></td>
<td><%= booking.end_time %></td>
<%end%>
我会将其更改为预订控制器的索引操作。这样,它将匹配“/约会/1/预订” 但是,如果有原因不能这样做,因为它不是标准路由之一,则需要在routes.rb文件中指定它。比如:
match '/appointments/:id/bookings/users_bookings' => 'bookings#users_bookings'
我会将其更改为bookings控制器的索引操作。这样,它将匹配“/约会/1/预订” 但是,如果有原因不能这样做,因为它不是标准路由之一,则需要在routes.rb文件中指定它。比如:
match '/appointments/:id/bookings/users_bookings' => 'bookings#users_bookings'
您是否尝试定义指向控制器中已定义操作的自定义路由,例如:
match 'appointments/:id/users_bookings' => 'bookings#users_bookings', :as => :users_bookings
resourcefull路由只会减轻您为CRUD操作键入标准路由的负担,但可以使用自定义路由进行扩展,例如,如果您希望为资源对象的PDF或CSV导出提供下载链接
然后,您可以使用视图文件中的“用户”\u bookings\u path指向该操作您是否尝试定义指向控制器中已定义操作的自定义路由,例如:
match 'appointments/:id/users_bookings' => 'bookings#users_bookings', :as => :users_bookings
resourcefull路由只会减轻您为CRUD操作键入标准路由的负担,但可以使用自定义路由进行扩展,例如,如果您希望为资源对象的PDF或CSV导出提供下载链接
然后,您可以使用视图文件中的users\u bookings\u path指向操作除非您确实希望匹配该URL的所有HTTP请求(
GET
,POST
,等等),否则您不应该使用match
(如其他人所建议的)。相反,只需将路由添加到do
块中的资源:
resources :appointments do
resources :bookings do
get 'user_bookings', :on => :collection
end
end
这将为
GET
请求添加一个额外的路由到“/appointments/:appointment\u id/bookings/user\u bookings”,并将其路由到“bookings\35; user\u bookings”。除非您确实想匹配该URL的所有HTTP请求(GET
,POST
),否则不应使用match
(如其他人所建议的)。相反,只需将路由添加到do
块中的资源:
resources :appointments do
resources :bookings do
get 'user_bookings', :on => :collection
end
end
这将为“/appointment/:appointment\u id/bookings/user\u bookings”的
GET
请求添加一个额外的路由,并将其路由到“bookings#user\u bookings”。谢谢。非常感谢你的帮助。谢谢。非常感谢你的帮助。谢谢。非常感谢你的帮助。谢谢。非常感谢你的帮助。谢谢。非常感谢你的帮助。谢谢。非常感谢你的帮助。