Rails 3 接受嵌套属性不起作用

发布于 2024-10-31 09:43:11 字数 567 浏览 3 评论 0原文

我尝试在用户模型上使用嵌套属性进行设置,以便我可以在单个页面中编辑用户信息和设置信息。这是我的代码:

User.rb

has_one :settings
accepts_nested_attributes_for :settings, :allow_destroy => true
attr_accessor :settings_attributes

views/users/registrations/edit.html.erb

<%= f.fields_for :settings do |s| %>
<p>
  <%= s.label :newsletter %><br />
  <%= s.check_box :newsletter %>
</p>
<% end %>

这看起来工作正常,表单显示正确。但是,当我提交表单时,设置的属性根本没有改变。

我正在使用 Rails 3,Devise 创建了我的用户模型。也许我遗漏了控制器模型中需要的东西?

I am trying to use nested attributes on my user model for settings so that I can edit the user info and the setting info in a single page. Here is my code:

User.rb

has_one :settings
accepts_nested_attributes_for :settings, :allow_destroy => true
attr_accessor :settings_attributes

views/users/registrations/edit.html.erb

<%= f.fields_for :settings do |s| %>
<p>
  <%= s.label :newsletter %><br />
  <%= s.check_box :newsletter %>
</p>
<% end %>

This seemingly works just fine, the form is displayed properly. However the attributes for the settings are not changed at all when I submit the form.

I am using Rails 3, and Devise created my user model. Perhaps I am missing something that needs to go in the controller model?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

请持续率性 2024-11-07 09:43:11

最有可能是由于使用复数而不是单数进行设置造成的。尝试更改为:

模型

has_one :setting
accepts_nested_attributes_for :setting, :allow_destroy => true

视图

<%= f.fields_for :setting do |s| %>

您使用 attr_accessor 做什么?

Most likely caused by using plural instead of singular for setting. Try changing to this:

model

has_one :setting
accepts_nested_attributes_for :setting, :allow_destroy => true

view

<%= f.fields_for :setting do |s| %>

What are you using the attr_accessor for?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文