我正在Ruby on Rails 5.2上开发一个项目,在这条路线中它告诉我我有一个错误,并且找不到指定的路线。但是当检查时,路线是否存在,或者至少我认为是。
这是我的路线。rb:
resources :checkin do
post :get_barcode, on: :collection
end
checkin_controller.rb:
class CheckinController < ApplicationController
def index
@checkin = CheckIn.all
end
def show
end
def new
@checkin = CheckIn.new
@checkin.upc = params[:upc]
end
def edit
end
def update
end
def destroy
end
def get_barcode
@checkin = Merchant.find_or_initialize_by(upc: params[:upc])
unless @checkin.new_record?
redirect_to @checkin
else
redirect_to new_product_path(upc: params[:upc])
end
end
end
在我看来,我的链接是
<%= link_to "Check-In", checkin_path, :class => "nav-link" %>
答案 0 :(得分:1)
如果您在控制台中运行rake routes
,则会看到路由为:
get_barcode_checkin_index POST /checkin/get_barcode(.:format) checkin#get_barcode
checkin_index GET /checkin(.:format) checkin#index
POST /checkin(.:format) checkin#create
new_checkin GET /checkin/new(.:format) checkin#new
edit_checkin GET /checkin/:id/edit(.:format) checkin#edit
checkin GET /checkin/:id(.:format) checkin#show
PATCH /checkin/:id(.:format) checkin#update
PUT /checkin/:id(.:format) checkin#update
DELETE /checkin/:id(.:format) checkin#destroy
如您所见,checkin_path
期望有一个id
,您在这里没有提供它:
<%= link_to "Check-In", checkin_path, :class => "nav-link" %>
您的错误可能说明了缺少ID的问题,但是您没有在问题中提供该错误,因此我们无法确切看到错误内容。
顺便说一句,根据惯例,CheckinController
应该是CheckinsController
。您的路线可能应该是:
resources :checkins do
post :get_barcode, on: :collection
end
答案 1 :(得分:0)
正如您在评论中说的那样,您是否希望索引页的URL? 然后代替
<%= link_to "Check-In", checkin_path, :class => "nav-link" %>`
您需要使用
<%= link_to "Check-In", checkin_index_path, :class => "nav-link" %>