Rails 4, starke Parameter, verschachtelte Ressourcen, Build und undefinierte Methoden erlauben
Ich kann Rails 4, starke Parameter, nicht für die Arbeit mit verschachtelten Ressourcen per Build erhalten. Anregungen wären sehr willkommen.
RSPEC zeigt es mir
Erstellen von Aktionen Erstellen einer Aktion Fehler / Fehler: click_button "Aktion erstellen" NoMethodError: undefinierte Methodepermit' for "create":String # ./app/controllers/actions_controller.rb:24:in
action_params '# ./app/controllers/actions_controller.rb:10:increate' # ./spec/features/creating_actions_spec.rb:16:in
Block (2 Ebenen) in '
Mein Browser zeigt mir:
NoMethodError in ActionsController # create undefinierte Methode `permit 'für" create ": String
Extrahierte Quelle (um Zeile # 24):
def action_params params.require (: action) .permit (: title,: description) end
Actions Controller enthält:
def create
@action = @project.actions.build(action_params)
if @action.save
flash[:notice] = "Action has been created."
redirect_to [@project, @action]
else
flash[:alert] = "Action has not been created."
render "new"
end
end
private
def action_params
params.require(:action).permit(:title, :description)
end
Ich verwende verschachtelte Ressourcen:
resources :projects do
resources :actions
end
Das Formular sieht wie folgt aus:
<%= form_for [@project, @action] do |f| %>
<% if @action.errors.any? %>
<div id="error_explanation" >
<h2><%= pluralize(@action.errors.count, "error") %>
prohibited this action from being saved:</h2>
<ul>
<% @action.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<p>
<%= f.label :title %><br>
<%= f.text_field :title %>
</p>
<p>
<%= f.label :description %><br>
<%= f.text_area :description %>
</p>
<%= f.submit %>
<% end %>