0

应用程序/模型/post.rb

class User < ActiveRecord::Base
  has_many :posts, :dependent => :destroy
  accepts_nested_attributes_for :posts
  attr_accessible ... :posts_attributes

...

应用程序/模型/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>
...

路线.rb

resources :posts

一是用户注册作品的形式。但是帖子部分未显示在当前配置中。如果我将 fields_for :posts 切换到 fields_for :post,我会得到完整的表单,但在提交时我会收到错误“无法批量分配受保护的属性”。

现在,如果我将 :post 添加到 attr_accessible,我会收到错误“未知参数帖子”

如果我要将它移动到用户控制器,我该如何覆盖默认的设计控制器?那还重要吗?

4

2 回答 2

1

attr_accessible您还必须在模型中定义您的Post

应用程序/模型/post.rb

class Post < ActiveRecord::Base
  belongs_to :user
  has_one :user
  attr_accessible :title

end

请将此添加到您的控制器方法中:

resource.posts.build

希望这会有所帮助。谢谢

于 2013-08-07T18:16:07.720 回答
0

我在表单之前添加了 <% resource.posts.build %> 并且有效。

于 2013-08-07T19:04:55.860 回答