Ich versuche, eine Ressource mit einer anderen (verschachtelten) zur gleichen Zeit zu erstellen. Ich benutze Rails4 und simple_form 3.0.0rc. Hier ist mein Code. Modelle
:Wie sollte ich rails und simple_form für verschachtelte Ressourcen verwenden?
class User < ActiveRecord::Base
has_one :profile
accepts_nested_attributes_for :profile
end
class Profile < ActiveRecord::Base
belongs_to :user
end
Controller:
class UsersController < ApplicationController
def new
@user = User.new
@user.build_profile
end
def create
user = User.new user_params
user.save
redirect_to root_url
# @par =params
end
private
def user_params
params.require(:user).permit(:email, profile_attributes: [:name])
end
end
Ansicht (Formular für neue Benutzer)
<%= simple_form_for @user do |f| %>
<%= f.input :email %>
<%= simple_fields_for :profile do |p| %>
<%= p.input :name %>
<% end %>
<%= f.submit %>
<% end %>
Wenn ich das Formular erstellen Aktion erhalten speichert diese params:
{"utf8"=>"✓", "authenticity_token"=>"dJAcMcdZnrtTXVIeS2cNBwM+S6dZh7EQEALZx09l8fg=", "user"=>{"email"=>"[email protected]"}, "profile"=>{"name"=>"Vasily"}, "commit"=>"Create User", "action"=>"create", "controller"=>"users"}
Und nach ‚user_params‘ das einzige, was aufrufen, die
{"email"=>"[email protected]"}
links ist
Und wie Sie sehen können, gibt es nichts zu ‚Profil‘ ist, so wird kein Profil erstellt werden.
Was mache ich falsch?
P.S. Entschuldigung für mein Englisch.
Autsch! Thx viel @Bigxiang :) –
Das hat mich buchstäblich Stunden gerettet. – Kyle