Lorsque vous essayez d'accéder à la page d'index des raisonsNameError - variable locale définie ou méthode en appelant la méthode créée dans le contrôleur
NameError in Reasons#index
Showing /home/alec/workspace/rails/nwis/app/views/reasons/index.html.erb where line #26 raised:
undefined local variable or method `upvote_reason' for #<#<Class:0x000000023d9940>:0x000000023d3298>
Extracted source (around line #26):
23: <td><%= link_to 'Show', reason %></td>
24: <td><%= link_to 'Edit', edit_reason_path(reason) %></td>
25: <td><%= link_to 'Destroy', reason, :confirm => 'Are you sure?', :method => :delete %></td>
26: <td><%= link_to "Vote up", :action => upvote_reason, :id => reason.id %></td>
27: </tr>
28: <% end %>
29: </table>
Rails.root: /home/alec/workspace/rails/nwis
Application Trace | Framework Trace | Full Trace
app/views/reasons/index.html.erb:26:in `block in _app_views_reasons_index_html_erb__2084449067598068298_18776480__4598497200926455905'
app/views/reasons/index.html.erb:16:in `each'
app/views/reasons/index.html.erb:16:in `_app_views_reasons_index_html_erb__2084449067598068298_18776480__4598497200926455905'
app/controllers/reasons_controller.rb:7:in `index'
La ligne dans la vue:
<td><%= link_to "Vote up", :action => upvote_reason, :id => reason.id %></td>
La méthode dans le contrôleur:
def upvote_reason
@reason = Reason.find(params[:id])
@reason.upvote += 1
@reason.save
redirect_to reason_path
end
il est vrai que je suis assez nouveau à Rails, mais je sens que je suis sur le point de celui-ci en cliquant, une fois Je peux comprendre comment interagir correctement avec le contrôleur. Si quelqu'un peut me diriger dans la bonne direction vers un tutoriel qui couvre bien ce sujet, je serais heureux de vérifier si c'est une question trop basique.
Merci! Cependant, cela a conduit à une erreur de routage: 'Aucune route correspond {: action =>" upvote_reason ",: id => 1,: controller =>" raisons "}' - Je pensais que l'utilisation de link_to générerait automatiquement un lien vers le méthode de contrôleur appropriée et donnée id param? – Alec
Voir mes modifications re: votre fichier routes.rb. –