我对Rails还很陌生,所以请耐心等待。
简而言之,我试图创建一个表单,参加婚礼的客人可以在其中输入一个简单的代码(invite_code
),然后RSVP。from应该接受invite_code
,然后直接使用正确的invites#show
视图。
到目前为止一切顺利,但是我一直在尝试让rails查找除和id
之外的记录,我想查找invite_code
。假设我有一个Invite
,其中id
为4,invite_id
为1234,当我在from中输入“4”而不是“1234”时,窗体正在查找正确的记录。下面是一些代码来解释:
路由.rb
get 'invites/search', to: 'invites#show', controller: :invites
表格
...
<%= form_tag invites_search_path, method: :get do %>
<%= label_tag :invite_code, "#" %>
<%= text_field_tag :invite_code, nil %>
<%= submit_tag "Search", name: nil %>
<% end %>
...
邀请控制器
...
def show
if params.has_key?(:invite_code)
@invite = Invite.find(params[:invite_code])
else
@invite = Invite.find(params[:id])
end
end
...
rake路由输出
Prefix Verb URI Pattern Controller#Action
info_index GET /info/index(.:format) info#index
invites GET /invites(.:format) invites#index
POST /invites(.:format) invites#create
new_invite GET /invites/new(.:format) invites#new
edit_invite GET /invites/:id/edit(.:format) invites#edit
invite GET /invites/:id(.:format) invites#show
PATCH /invites/:id(.:format) invites#update
PUT /invites/:id(.:format) invites#update
DELETE /invites/:id(.:format) invites#destroy
请输入您的搜索请求,并输入您的搜索结果。
URL示例
.../invites/search?utf8=%E2%9C%93&invite_code=1234
"utf8"=>"✓", "invite_code"=>"1234", "id"=>"search"
应用程序似乎忽略了控制器中if语句的invite_id
部分...
我花了很长时间才走到这一步...
3条答案
按热度按时间cygmwpex1#
您有几个选项。
find_by_invite_code
将返回第一个匹配项:而
where
将以数组的形式给予所有匹配项您也可以对
find_by
使用下列语法:vshtjzan2#
默认情况下,
find
使用id
字段,请改用where
0x6upsns3#