2016-06-30 39 views
-1

錯誤:沒有路由匹配[GET]「/預訂/:ID /%3E:格式」的Rails:路由錯誤,而試圖通過的link_to更新屬性

我想更新的屬性時點擊的「鏈接的link_to」 ..

<%= link_to 'Cancel', '/bookings/:id/(.:format)' %> 

的routes.rb

put '/bookings/:id/(.:format)' => "bookings#tocancel" 
patch '/bookings/:id/(.:format)' => "bookings#tocancel" 

控制器

def tocancel 
@booking = Booking.find(params[:id]) 
@booking.update_attribute(:status, "cancel") 
respond_to do |format| 
    format.html { redirect_to @booking, notice: 'Booking was successfully cancelled.' } 
    format.json { render :show, status: :ok, location: @booking } 

+0

您不會將URL格式傳遞給link_to。您可以使用助手方法bookings_path並傳遞@booking對象。閱讀關於它的(優秀的)文檔:http://guides.rubyonrails.org/routing.html – MrWillihog

+0

'<%= link_to'取消','complete_url/bookings/pass_id_value_here'%>'在id:地點。 –

+0

<%= link_to'取消',tocancel_booking_path(預訂)%>錯誤:沒有路由匹配[GET]「/ bookings/36/tocancel」 –

回答

0

創建預訂控制器的方法爲:

def tocancel 
@booking = Booking.find(params[:id]) 
@booking.update_attribute(:status, "cancel") 
respond_to do |format| 
    format.html { redirect_to @booking, notice: 'Booking was successfully cancelled.' } 
    format.json { render :show, status: :ok, location: @booking } 
end 
end 

線配合,這將是:

resources :bookings do 
    member do 
    get :tocancel 
    end 
end 

取消鏈接可被創建爲:

link_to "Cancel", tocancel_booking_path(booking.id) 

在這裏你應該有booking_id傳遞給取消鏈接。現在檢查您如何在您放置此取消鏈接的頁面上獲得booking_id。 讓我知道是否有問題。

+0

錯誤:未定義的局部變量或方法'booking_id' 0x00000003265158>:0x007fe38405a900> –

+0

你可以給我的網頁的網址,你要添加此鏈接。您需要檢索該頁面中的booking_id並傳遞給此取消鏈接。 – SnehaT

+0

這裏是鏈接active.html.erb [link](https://drive.google.com/file/d/0B-cw8FVV0gUeSENXWGlrbW1HNVU/view? usp = sharing) –