我希望现有用户能够为自己创建一个“常量”记录,以便稍后用于执行计算。我正在使用devize。
当我“编辑个人资料”时,如果数据库中不存在,则没有为dealer_constant显示的字段。
应用程序/模型/ user.rb
class User < ActiveRecord::Base
attr_accessible :email, :password, :password_confirmation, :first_name, :last_name, :dealer_constant_attributes
has_one :dealer_constant
accepts_nested_attributes_for :dealer_constant
应用程序/视图/用户/ edit.html.erb
<%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| %>
<%= f.fields_for :dealer_constant do |builder| %>
<%= render "dealer_constant_fields", :f => builder %>
<% end %>
应用程序/视图/用户/ _dealer_constant_fields.html.erb
<%= f.label :crew_size %>
<%= f.number_field :crew_size %>
<%= f.label :hourly_rate %>
<%= f.text_field :hourly_rate %>
非常感谢任何协助。
答案 0 :(得分:0)
由于用户在编辑时没有dealer_constant,因此字段未显示。您需要的是:
在 user.rb 中添加此方法
def with_dealer_constant
self.biuld_dealer_constant if self.dealer_constant.nil?
self
end
然后,在 app / views / user / edit.html.erb 视图文件中,执行以下操作:
<%= form_for([resource_name, resource.with_dealer_constant], url: registration_path(resource_name), html: { method: :put }) do |f| %>
<%= f.fields_for :dealer_constant do |builder| %>
<%= render "dealer_constant_fields", :f => builder %>
<% end %>
<!-- rest of the fields -->
<% end %>