如何向表单添加虚拟字段

Yur*_*lov 9 ruby ruby-on-rails ruby-on-rails-4


开始学习Ruby on Rails.
如何在表单中添加虚拟字段?
提交表单后,必须将这些字段组合并存储在单个数据库字段中.

Tom*_*ill 8

首先像往常一样设置表单:

<%= form_for @user do |f| %>
<ol>
  <li>
    <%= f.label :first_name, 'First Name' %>
    <%= f.text_field :first_name %>
  </li>
  <li>
    <%= f.label :last_name, 'Last Name' %>
    <%= f.text_field :last_name %>
  </li>
  <%= f.submit %>
</ol>
<% end %>
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我们为first_name和添加了一个虚拟属性last_name.

user.rb

class User < ActiveRecord::Base
  attr_accessor :first_name
  attr_accessor :last_name
end
Run Code Online (Sandbox Code Playgroud)

添加一个attr_accessor新的虚拟属性.

users_controller.rb

def create
  @user = User.new(:full_name => {'firstname' => user_params[:first_name], 'lastname' => user_params[:last_name]})
  ...
end

private

def user_params
  params.require(:user).permit(:first_name, :last_name)
end
Run Code Online (Sandbox Code Playgroud)

最后,添加一个允许虚拟属性参数的方法(假设Rails 4).

要保存多个输入并将其保存到DB中的单个字段,您可以组合控制器中的虚拟字段,然后将它们保存到DB,如create上面的方法所示.