我的视图中有一个表单输入字段,我只选择一个输入字段来捕获用户名:
_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_name
和user.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输入)。感谢