我在数据库“User_Name”中只有一个字段,我需要将名字和姓氏的组合保存到该字段中。 我在这行<%= f.text_field(:firstName,params [:firstName])%> 中遇到问题,因为我的模型中没有任何firstName列。 帮我解决这个问题。
<%= form_for(@user,url: "/user", :method => :post) do |f| %>
<%= f.label("First Name") %>
<%= f.text_field(:firstName, params[:firstName]) %></br>
<%= f.label("Last Name") %>
<%= f.text_field(:lastName, params[:lastName]) %></br>
<%= f.label("Email Address") %>
<%= f.text_field(:email, params[:email]) %></br>
<%= f.label("Password") %>
<%= f.password_field(:password, params[:password]) %></br>
<%= f.label("Confirm Password") %>
<%= f.password_field(:confirmPassword, params[:confirmPassword]) %></br>
<%= f.label("College") %>
<%= f.text_field(:college, params[:college]) %></br>
<%= f.label("Major") %>
<%= f.text_field(:major, params[:major]) %></br>
<%= f.label("Current Job") %>
<%= f.text_field(:currentJob, params[:currentJob]) %></br>
<%= f.submit("Register",class: "btn btn-primary") %>
<% end %>
答案 0 :(得分:1)
如果您想在表单中显示first_name
和last_name
并仅在数据库中存储full_name
,您可以在模型中进行以下更改:
attr_accessor :first_name, :last_name
before_validation :set_full_name
def first_name
full_name.split(' ')[0]
end
def last_name
full_name.split(' ')[1]
end
def set_full_name
self.full_name = [first_name, last_name].join(' ')
end
答案 1 :(得分:0)
如果您在数据库中没有该字段,为什么要在$("#inner_form").html("<%= j(render 'inner_form') %>");
中使用该字段?
您的选择是:
1)将数据库更改为名字和/或姓名
2)将表单更改为1字段
3)创建方法form
和firstName=
(在RoR中,您通常使用“_”,即firstName
选项3未经过测试,但应该可以工作(您需要拆分数据库字段等)。
答案 2 :(得分:0)
在Rails中使用模型的表单应反映您想要直接在模型中封装的数据,以减少您或其他人混淆实际从此表单接收的模型的可能性
为此,我建议您取消firstName
和lastName
字段,而不是:user_name
。用户体验应该解释它应该是他们的名字和姓氏(如果他们想要的话,还应该是其他名字)。这可以使您的表单和数据模型保持一致。