I feel like I'm really close so I'll get to the point. I've created a new view file (app/views/subjects/screening.html.erb). That would place the new file next to the edit.html.erb, which I used as my template. My edit.html.erb file works as intended, which is really weird because I've copied the logic/routes/etc for my new file, and I'm not getting the same results.
This is frustrating. The MVC is being mean.
So here is the link to the page:
subjects/index.html.erb
<% @subjects.each do |sub| %>
<tr>
<td><%= link_to "edit", edit_subject_path(sub) %></td>
<td><%= link_to "scr", screening_path(sub) %></td>
<td><%= sub.subject_id %></td>
<td><%= sub.study_site == 1? "Seattle" : sub.study_site == 2? "Portland" : "nil"%></td>
<td><%= sub.treatment_group %></td>
</tr>
<% end %>
Where the link to "edit" works, producing this URL 'localhost:3000/subjects/{:id}/edit'. And the link to "scr" does not, producing 'localhost:3000/screening.{:id}'.
routes.rb
resources :users
resources :sessions, only: [:new, :create, :destroy]
# resources :subjects, only: [:new, :create, :destroy]
resources :subjects
match '/signup', to: 'users#new'
match '/signin', to: 'sessions#new'
match '/signout', to: 'sessions#destroy', via: :delete
match '/edit', to: 'users#edit'
root to: 'static_pages#home'
match '/help', to: 'static_pages#help'
match '/about', to: 'static_pages#about'
match '/contact', to: 'static_pages#contact'
match '/subjects', to: 'subjects#show'
match '/newsubject', to: 'subjects#new'
match '/subjects', to: 'subjects#index'
match '/showsubject', to: 'subjects#show'
match '/editsubject', to: 'subjects#edit'
match '/screening', to: 'subjects#screening'
Do I have to declare something extra because I added it manually? Any help would be greatly appreciated. Thanks.
I would suggest a nested route like so:
Which should allow:
I could be a little off with the naming. Be sure to check your routes (
rake routes
in shell). Also, remove:These routes are automatically generated with
resources :subjects
, though by default their paths differ.