Ruby on rails 在视图RoR中合并名字和姓氏

Ruby on rails 在视图RoR中合并名字和姓氏,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在编写我的第一个rails项目,大约在编写过程中,我意识到在从管理屏幕创建某些用户时,我需要输入名字和姓氏。这样做的原因是,这些用户可以自动将密码设置为姓氏,然后在首次登录时具有密码重置选项。然而,我的Users表只包含name:string,我不想将其更改为first和last name列(这在一开始是很明智的,但现在我已经为用户构建了其他表单,重构会非常烦人)。我一直在用不同的方法来组合表单_中的字段,但到目前为止还没有一种有效的方法(有些方法出现在我的代码中)。想法 为了澄清这一点,我

我正在编写我的第一个rails项目,大约在编写过程中,我意识到在从管理屏幕创建某些用户时,我需要输入名字和姓氏。这样做的原因是,这些用户可以自动将密码设置为姓氏,然后在首次登录时具有密码重置选项。然而,我的Users表只包含name:string,我不想将其更改为first和last name列(这在一开始是很明智的,但现在我已经为用户构建了其他表单,重构会非常烦人)。我一直在用不同的方法来组合表单_中的字段,但到目前为止还没有一种有效的方法(有些方法出现在我的代码中)。想法

为了澄清这一点,我并不是在寻找任何改变user.rb文件以要求用户有名字或姓氏的东西

管理员/控制器:

def newchair
  params[:user][:name] = "#{params[:first]} #{params[:last]}"
  params[:user][:password] = "#{params[:last]}"
  params[:user][:password_confirmation] = "#{params[:last]}"
  @user = User.new(user_params)
  if @user.save
    redirect_to '/admin/chair'
  else
    redirect_to '/admin/chair'
  end
end
...
private
  def user_params
    params.require(:user).permit(:name, :email, :password,
                               :password_confirmation, :access_level,
                               :phone_number)
  end
chairs.html.erb

<div class="row">
  <div class="col-md-6 col-md-offset-3">
    <%= form_for(@user) do |f| %>

      <%= f.label :first_name %>
      <input type="text" name="first" id="first" />

      <%= f.label :last_name %>
      <input type="text" name="last" id="last" />



      <%= f.label :email %>
      <%= f.email_field :email, class: 'form-control' %>

      <%= f.hidden_field :access_level, :value => "Chair" %>

      <%= f.label :Phone %>
      <%= f.telephone_field :phone_number, class: 'form-control' %>

      <p>&nbsp;</p>
      <div class="col-md-12">
        <%= f.submit "Create my account", class: "btn btn-primary" %>
      </div>
    <% end %>
  </div>
</div>

谢谢

它就像使用

params[:user][:name] = "#{params[:first]} #{params[:last]}"

当您只添加一个键时,不需要真正合并,然后我使用字符串插值使字符串串联更易于阅读。

这行代码应该放在哪里?我上面更新的代码仍然会产生错误的输出(我已经添加了),例如,您可以将此行放在
user\u params
函数的开头。但别忘了添加零检查,否则这一行可能会使你的应用程序崩溃!根据经验,我可以告诉你,从长远来看,没有独立的
名字
姓氏
字段可能是个糟糕的主意。主要是因为不可逆性:如果需要的话,几乎不可能从
全名中检索名字/姓氏(有些人有带空格的复合名…)。现在我明白了从
name
迁移到
first\u name
last\u name
可能会很复杂,但这可以在将来为您节省一些麻烦……谢谢@cyridd是的,我可能会这样做
params[:user][:name] = "#{params[:first]} #{params[:last]}"