I'm very new to rails so please be patient with me.
In short I'm trying to create a form in which guests to a wedding can enter a simple code (invite_code
) and then RSVP. The from should take the invite_code
and then take the use straight to the correct invites#show
view.
So far so good, but I'm stuck trying to get rails to find a record by something other than and id
, I want to find by invite_code
. Say I've got an Invite
with an id
of 4 and an invite_id
of 1234, the form is finding the correct record when I enter '4' into the from but not '1234'. Here's some code to explain:
routes.rb
get 'invites/search', to: 'invites#show', controller: :invites
form
...
<%= form_tag invites_search_path, method: :get do %>
<%= label_tag :invite_code, "#" %>
<%= text_field_tag :invite_code, nil %>
<%= submit_tag "Search", name: nil %>
<% end %>
...
invites_controller
...
def show
if params.has_key?(:invite_code)
@invite = Invite.find(params[:invite_code])
else
@invite = Invite.find(params[:id])
end
end
...
rake routes output
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
invites_search GET /invites/search(.:format) invites#show root GET / info#index
URL example
.../invites/search?utf8=%E2%9C%93&invite_code=1234
"utf8"=>"✓", "invite_code"=>"1234", "id"=>"search"
The application seems to be ignoring the invite_id
part of if statement in the controller...
Any help appreciated, it's taken me a long time to get this far...