Comment dois-je utiliser rails et simple_form pour les ressources imbriquées?
Je suis en train de créer une ressource à une autre (imbriqué) en même temps. Je suis en utilisant Rails4 et simple_form 3.0.0 rc. Voici mon code.
Modèles:
class User < ActiveRecord::Base
has_one :profile
accepts_nested_attributes_for :profile
end
class Profile < ActiveRecord::Base
belongs_to :user
end
Contrôleur:
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
Afficher (formulaire pour les nouveaux utilisateurs)
<%= simple_form_for @user do |f| %>
<%= f.input :email %>
<%= simple_fields_for :profile do |p| %>
<%= p.input :name %>
<% end %>
<%= f.submit %>
<% end %>
Lorsque je soumets le formulaire, créer des actions en attente de ce params:
{"utf8"=>"✓", "authenticity_token"=>"dJAcMcdZnrtTXVIeS2cNBwM+S6dZh7EQEALZx09l8fg=", "user"=>{"email"=>"[email protected]"}, "profile"=>{"name"=>"Vasily"}, "commit"=>"Create User", "action"=>"create", "controller"=>"users"}
Et après l'appel 'user_params" la seule chose que la gauche est
{"email"=>"[email protected]"}
Et, comme vous pouvez le voir, il n'y a rien sur la page "profil", donc pas de profil sera créé.
Ce que je fais mal?
P. S. désolé pour mon anglais.
source d'informationauteur vasily.sib
Vous devez vous connecter pour publier un commentaire.
Utilisation
f.simple_fields_for
au lieu desimple_fields_for
:Dans mon cas, j'ai eu l'objet "livre" qui appartient à "tour" et "tour" has_many "livres".
Dans le "BookController" dans la méthode "nouveau", je trouve le tour et initialiser le livre-objet:
@tour = Tour.find(params[:tour_id])
C'est la forme partielle de créer un livre: _form.html.erb