我有两个一对一关系的模型,用户和作者。
我有两个问题:作者实例没有保存,而user.name也没有保存(尽管其他属性也是如此)。我认为这是一个权限错误,因为日志说:
Unpermitted parameters: name, authors
我试图遵循这个:How to save form data to different models with one-to-one relationship in rails 3?
User.rb
has_one :author
accepts_nested_attributes_for :author
Author.rb
belongs_to :user
作者#新
<%= simple_form_for @user do |f| %>
<%= f.input :name %>
<%= f.input :email %>
<%= f.input :password %>
<%= f.input :password_confirmation %>
<%= f.simple_fields_for :author do |author_form| %>
<%= author_form.input :bio %>
<% end %>
<%= f.submit %>
<% end %>
Users_Controller
def user_params
params.require(:user).permit(:name, :email, :image,
author_attributes: [:id, :bio,])
end
答案 0 :(得分:0)
用户控制器应如下所示: -
def new
@user = User.new
@user.build_author
end
def create
@user = User.new(user_params)
if @user.save
redirect_to success_path
else
render :new
end
end
private
def user_params
params.require(:user).permit(:name, :email, :password, :password_confirmation, author_attributes: [:id, :bio])
end
用户#新
<%= simple_form_for @user do |f| %>
<%= f.input :name %>
<%= f.input :email %>
<%= f.input :password %>
<%= f.input :password_confirmation %>
<%= f.simple_fields_for :author do |author_form| %>
<%= author_form.input :bio %>
<% end %>
<%= f.submit %>
<% end %>
答案 1 :(得分:0)
我正在使用Devise gem并找到了将此代码添加到应用程序控制器的解决方案:
before_action :configure_permitted_parameters, if: :devise_controller?
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:name, :email, :password, author_attributes: [:id, :bio]) }
end