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”。

谢谢。非常感谢你的帮助。谢谢。非常感谢你的帮助。谢谢。非常感谢你的帮助。谢谢。非常感谢你的帮助。谢谢。非常感谢你的帮助。谢谢。非常感谢你的帮助。