2013-08-07 50 views
0

应用程序/模型/ post.rb设计套装形式,的has_many关系

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> 
... 

routes.rb

resources :posts 

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

现在,如果我补充:帖子attr_accessible,我得到的错误“未知参数后置”

如果我是这个移动到用户控制器,我该如何覆盖默认设计控制器?这甚至很重要吗?

回答

1

您必须将您的attr_accessible定义到您的Post模型中。

应用程序/模型/ post.rb

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

end 

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

resource.posts.build 

希望这会有所帮助。谢谢

+0

我有attr_accessible – zzzzzzzzzzz

+0

我已经更新了答案的所有属性。尝试这个并让我知道,如果它的工作与否。 –

+0

我将 <%resource.posts.build%>添加到我的视图中, – zzzzzzzzzzz

0

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

相关问题