将First和Last名称组合到RubyonRails中的单个字段中

时间:2016-11-25 06:59:39

标签: ruby-on-rails ruby ruby-on-rails-4

我在数据库“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 %>

3 个答案:

答案 0 :(得分:1)

如果您想在表单中显示first_namelast_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)创建方法formfirstName=(在RoR中,您通常使用“_”,即firstName

选项3未经过测试,但应该可以工作(您需要拆分数据库字段等)。

答案 2 :(得分:0)

在Rails中使用模型的表单应反映您想要直接在模型中封装的数据,以减少您或其他人混淆实际从此表单接收的模型的可能性

为此,我建议您取消firstNamelastName字段,而不是:user_name。用户体验应该解释它应该是他们的名字和姓氏(如果他们想要的话,还应该是其他名字)。这可以使您的表单和数据模型保持一致。