我有预订资源。为了批准预订,我在BookingsController中添加了批准方法:
def approve
@booking = Booking.find_by_id(params[:id])
@booking.update(state: "approved")
if @booking.state == "approved"
flash[:success] = "Booking successfully approved"
redirect_to bookings_path
else
flash[:error] = "Booking not approved"
redirect_to bookings_path
end
端
要批准预订,我使用了链接:
<td><%= link_to 'Approve', bookings_approve(id: booking.id), class: "button-xs success" %></td>
我不确定批准的链接和相应的路线定义。如何定义路线和链接到aprrove?
每个预订都有一个状态栏,我想在按下批准按钮时将其更改为“已批准”。 提前谢谢!
答案 0 :(得分:3)
您可以执行以下操作:
resources :bookings do
member do
post :approve
end
end
哪个会给你(rake routes
):
approve_booking POST /bookings/:id/approve(.:format) bookings#approve
bookings GET /bookings(.:format) bookings#index
POST /bookings(.:format) bookings#create
new_booking GET /bookings/new(.:format) bookings#new
edit_booking GET /bookings/:id/edit(.:format) bookings#edit
booking GET /bookings/:id(.:format) bookings#show
PATCH /bookings/:id(.:format) bookings#update
PUT /bookings/:id(.:format) bookings#update
DELETE /bookings/:id(.:format) bookings#destroy
然后做:
<td>
<%= link_to 'Approve', approve_booking_path(booking), class: "button-xs success", method: :post %>
</td>
顺便说一句,你说你有一个status
字段,但在你的控制器方法中,你可以:
@booking.update(state: "approved")
state
!= status
...