stu*_*kov 4 ruby-on-rails nested-attributes devise ruby-on-rails-3
我遇到嵌套属性和Devise的问题.与如何在设计模型中使用嵌套属性类似的问题.据我所知,我已按照此处的建议设置了所有内容: 覆盖设计注册控制器
我已经设置了关联的用户和订阅,我已经"accepts_nested_attributes_for"和包括:subscriptions_attributes中attr_accessible,但我从设计控制器警告.
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,:recoverable, :rememberable, :trackable, :validatable
validates_presence_of :first_name, :last_name
has_many :subscriptions
accepts_nested_attributes_for :subscriptions
attr_accessible :first_name, :last_name, :email, :password, :password_confirmation, :remember_me, :subscriptions_attributes
...
end
Run Code Online (Sandbox Code Playgroud)
-
class Subscription < ActiveRecord::Base
belongs_to :user
validates_presence_of :user_id, :chargify_subscription_id, :chargify_product_handle
attr_accessible :user_id, :chargify_subscription_id, :chargify_product_handle
...
end
Run Code Online (Sandbox Code Playgroud)
设计/注册/ new.html.erb:
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
<%= devise_error_messages! %>
<p><%= f.label :first_name %><br />
<%= f.text_field :first_name %></p>
...
<%= f.fields_for :subscription do |s| %>
<p><%= s.label :chargify_subscription_id %><br />
<%= s.text_field :chargify_subscription_id %></p>
...
Run Code Online (Sandbox Code Playgroud)
我收到以下警告:
Started POST "/users" for 127.0.0.1 at Sat May 14 12:38:49 -0700 2011
Processing by Devise::RegistrationsController#create as HTML
Parameters: {"commit"=>"Sign up", "authenticity_token"=>"wNZhZgIhYm9CpZfhvDiRBqaJseoO8QvR0Mk9VIybhcI=", "utf8"=>"?", "user"=>{"password_confirmation"=>"[FILTERED]", "last_name"=>"9", "subscription"=>{"chargify_product_handle"=>"medium", "chargify_subscription_id"=>"123"}, "password"=>"[FILTERED]", "first_name"=>"9", "email"=>"99@99. com"}}
WARNING: Can't mass-assign protected attributes: subscription
Run Code Online (Sandbox Code Playgroud)
我尝试使用subscription_attributes(单数),attr_accessible但这不起作用.
对于我可能做错的任何建议?谢谢.
由于您的用户和订阅模型之间存在has_many关联,因此我认为您需要指定fields_for :subscriptions而不是fields_for :subscription.
<%= f.fields_for :subscriptions do |s| %>
<p><%= s.label :chargify_subscription_id %><br />
<%= s.text_field :chargify_subscription_id %></p>
...
Run Code Online (Sandbox Code Playgroud)
然后,使用subscriptions_attributes参数传递fields_for范围内的属性,该参数应该可以使用attr_accessible :subscriptions_attributes.
有关嵌套的has_many关联表单的更多示例,请查看Rails文档的"嵌套属性示例"部分(一对多).
| 归档时间: |
|
| 查看次数: |
3069 次 |
| 最近记录: |