如何将视图中的全名拆分为first_name和last_name并发送给模型?

时间:2015-07-04 22:24:09

标签: ruby-on-rails ruby model-view-controller model

我的视图中有一个表单输入字段,我只选择一个输入字段来捕获用户名:

  _signup_form.html.erb

  <div class="row">
    <%= form_for @user, class: "form", id: "subscribe-form", role: "form" do |u| %>
    <div class="line">
      <%= u.text_field :name, placeholder: 'Name here...', class: 'form-control', required: true %>
    </div>
    <div class="line">
      <%= u.text_field :email, placeholder: 'Your email here...', class: 'form-control', required: true %>
    </div>
    <div class="line">
      <%= u.submit 'Notify me', class: 'btn btn-danger btn-fill' %>
    </div>
    <% end %>
  </div>

目前我只是将名称变量(包括用户的名字和姓氏)保存到模型中:

  users_controller.rb

  def create
    @user = User.create(params[:user].permit(:name, :email))

    if @user.save
      redirect_to user_path(@user), :notice => 'You have been registered'
    else
      render '/users/new'
    end
  end

但我现在不想将整个user.name字段保存到模型中,而是将其拆分并将user.first_nameuser.last_name发送到模型。我理解如何编写.split方法:

  users_helper.rb

  def first_name(name)
    name.split(' ')[0].capitalize
  end

  def last_name(name)
    name.split(' ')[1].capitalize
  end

我已完成bin/rails g migrate add_first_name_to...并迁移以创建模型属性,但我不确定如何将#first_name和#last_name方法集成到控制器中,然后将每个方法发送到模型。 A)任何人都可以指出我正确的方向如何做到这一点和B)这是最佳做法吗? (原因我只提供名称字段,而不是视图中的first_name和last_name字段,因为我认为它只是代表用户将其放在一个字段中的更好的体验,即没有标签或光标点击进入last_name输入)。感谢

0 个答案:

没有答案