Ruby on Rails:路由未正确更新
Ruby on Rails: Route not updating correctly
我已经定义了以下路线:
get 'invites/search', to: 'invites#edit', controller: :invites
我更改自:
get 'invites/search', to: 'invites#show', controller: :invites
控制器如下:
def show
@invite = Invite.find(params[:id])
end
...
def edit
# If the request is a search containing an 'invite_code'
if params.has_key?(:invite_code)
@invite = Invite.where(invite_code: params[:invite_code]).first
else
@invite = Invite.find(params[:id])
end
end
我收到以下错误:
ActiveRecord::RecordNotFound in InvitesController#show
Couldn't find Invite with 'id'=search
Extracted source (around line #7):
6 def show
7 @invite = Invite.find(params[:id])
8 end
def new
这表明路线没有更新?
这是佣金路线:
invites_search GET /invites/search(.:format) invites#edit
我试过重新启动服务器,但我不确定现在该做什么?我怎样才能得到去 'edit' 而不是 'show' 的路线?
谢谢,
LM.
编辑:
这是来自索引页的表格:
<%= form_tag invites_search_path, method: :get do %>
<%= label_tag :invite_code, "#" %>
<%= text_field_tag :invite_code, nil %>
<%= submit_tag "Search", name: nil %>
<% end %>
编辑 2:
请参阅此处,了解我试图使用此代码实现的目标:
您为什么不尝试为该方法创建另一个名称,因为 resources :invites
总是生成完整的 CRUD,所以这可能是一个冲突
在 routes.rb
中尝试类似的操作
resources :invites do
resources :guests
collection do
get 'search'
end
end
然后你就这样调用它
<%= form_tag search_invites_path, method: :get do %>
我已经定义了以下路线:
get 'invites/search', to: 'invites#edit', controller: :invites
我更改自:
get 'invites/search', to: 'invites#show', controller: :invites
控制器如下:
def show
@invite = Invite.find(params[:id])
end
...
def edit
# If the request is a search containing an 'invite_code'
if params.has_key?(:invite_code)
@invite = Invite.where(invite_code: params[:invite_code]).first
else
@invite = Invite.find(params[:id])
end
end
我收到以下错误:
ActiveRecord::RecordNotFound in InvitesController#show
Couldn't find Invite with 'id'=search
Extracted source (around line #7):
6 def show
7 @invite = Invite.find(params[:id])
8 end
def new
这表明路线没有更新?
这是佣金路线:
invites_search GET /invites/search(.:format) invites#edit
我试过重新启动服务器,但我不确定现在该做什么?我怎样才能得到去 'edit' 而不是 'show' 的路线?
谢谢,
LM.
编辑:
这是来自索引页的表格:
<%= form_tag invites_search_path, method: :get do %>
<%= label_tag :invite_code, "#" %>
<%= text_field_tag :invite_code, nil %>
<%= submit_tag "Search", name: nil %>
<% end %>
编辑 2:
请参阅此处,了解我试图使用此代码实现的目标:
您为什么不尝试为该方法创建另一个名称,因为 resources :invites
总是生成完整的 CRUD,所以这可能是一个冲突
在 routes.rb
中尝试类似的操作resources :invites do
resources :guests
collection do
get 'search'
end
end
然后你就这样调用它
<%= form_tag search_invites_path, method: :get do %>