应用程序/模型/ post.rb
class User < ActiveRecord::Base
has_many :posts, :dependent => :destroy
accepts_nested_attributes_for :posts
attr_accessible ... :posts_attributes
...
app / models / post.rb
class Post < ActiveRecord::Base
belongs_to :user
has_one :user
...
应用程序/视图/后/新
<% form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
<%= devise_error_messages! %>
<div><%= f.label :username %><br />
<%= f.text_field :username, :autofocus => true %></div>
<div><%= f.label :email %><br />
<%= f.email_field :email %></div>
<div><%= f.label :password %><br />
<%= f.password_field :password %></div>
<div><%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation %></div>
<%= f.fields_for :posts do |post_fields| %>
<%= post_fields.label :title %><br />
<%= post_fields.text_field :title %></div>
...
的routes.rb
resources :posts
一,用户注册作品的表格。但是帖子部分没有出现在当前配置中。如果我切换fields_for:posts到fields_for:post,我会得到完整的表单,但在提交后我得到错误“无法批量分配受保护的属性”。
现在,如果我添加:发布到attr_accessible,我收到错误“unknown parameter post”
如果我要将其移动到用户控制器,我该如何覆盖默认的设计控制器?那甚至重要吗?
答案 0 :(得分:1)
您还必须将attr_accessible
定义到Post
模型中。
应用程序/模型/ post.rb
class Post < ActiveRecord::Base
belongs_to :user
has_one :user
attr_accessible :title
end
请将此添加到您的控制器方法:
resource.posts.build
希望这会有所帮助。感谢
答案 1 :(得分:0)
我添加了&lt;%resource.posts.build%&gt;在我的形式之前,这是有效的。