1
我想在我的用戶模型上使用嵌套屬性進行設置,以便我可以在單個頁面中編輯用戶信息和設置信息。這裏是我的代碼:rails 3接受嵌套屬性不起作用
User.rb
has_one :settings
accepts_nested_attributes_for :settings, :allow_destroy => true
attr_accessor :settings_attributes
的意見/用戶/註冊/ edit.html.erb
<%= f.fields_for :settings do |s| %>
<p>
<%= s.label :newsletter %><br />
<%= s.check_box :newsletter %>
</p>
<% end %>
這看似只是正常工作,正確顯示形式。但是,提交表單時,設置的屬性完全不會改變。
我正在使用Rails 3,並且Devise創建了我的用戶模型。也許我錯過了需要在控制器模型中去的東西?
實際模型被稱爲settings.rb。我正在使用attr_accesor,因爲如果我沒有,我會得到以下:irb(main):002:0> user.settings_attributes NoMethodError:未定義的方法'settings_attributes'爲#<用戶:0x102d7fe80> – goddamnyouryan 2011-04-10 05:57:21
從來沒有得到它的工作。最後只是創建一個新的模型,並通過控制器處理所有這一切 – goddamnyouryan 2011-04-14 09:11:39
抱歉,我想我錯過了您的第一條評論。我仍然認爲這與複數與單數有關,因爲您的模型名稱是複數。但是如果你滿足於將模型名稱作爲「設置」,那麼我認爲你的解決方案可能是要走的路,以避免Rails處理這個問題的任何問題。 – johnmcaliley 2011-04-14 14:10:09