如何在Rails中添加批准预订请求?

时间:2018-05-29 23:21:01

标签: ruby-on-rails ruby

我有预订资源。为了批准预订,我在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?

每个预订都有一个状态栏,我想在按下批准按钮时将其更改为“已批准”。 提前谢谢!

1 个答案:

答案 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 ...