Rails在控制器中提交输入值

时间:2014-12-01 00:36:50

标签: ruby-on-rails

我有一个属于用户的客户模型。但是,在创建新客户时,用户将不会登录。相反,我将根据用户名称属性分配用户。
以下是客户迁移:

create_table :customers do |t|
  t.belongs_to :user
  t.string :name, null: false
  t.date :install_date, null: false
  t.decimal :mmr, null: false
  t.boolean :sixty_month, default: false
  t.boolean :eft, default: false
  t.boolean :activation, default: false

  t.timestamps
end

然后我有了一个新的客户表格:

<h1>Create Customer</h1>

<%= form_for @customer do |f| %>
  <div>
    <%= f.label :name %>
    <%= f.text_field :name %>
  </div>

  <div>
    <%= f.label :install_date %>
    <%= f.date_field :install_date %>
  </div>

  <div>
    <%= f.label :mmr %>
    <%= f.number_field :mmr %>
  </div>

  <div>
    <%= f.label :sixty_month %>
    <%= f.check_box :sixty_month %>
  </div>

  <div>
    <%= f.label :eft %>
    <%= f.check_box :eft %>
  </div>

  <div>
    <%= f.label :activation %>
    <%= f.check_box :activation %>
  </div>

  <div>
    <%= f.label :users_name %>
    <%= f.text_field :users_name %>
  </div>

  <%= f.submit 'Create Customer' %>
<% end %>

我需要获取users_name字段并将其与关联用户匹配,并获取该用户ID并将其分配给customers:user_id属性。在客户控制器创建行动到目前为止我有:

@customer.user_id = User.where("name = #{}").id

我需要从新客户表单中的users_name字段提取输入,并以某种方式将其放入上面的代码中。我只是不知道哈哈。感谢所有帮助!

1 个答案:

答案 0 :(得分:1)

您可能希望将其移出控制器并进入辅助方法,但您可以这样做:

    def create
      @customer = Customer.new(customer_params)
        if params[:users_name]
          user = User.find_by(name: params[:users_name])
          @customer.user_id = user.id unless user.nil?
        end
       if @customer.save
         flash[:success] = "Customer created!"
         redirect_to @customer
       else
        render 'new'
       end
    end

假设您使用的是Rails 4。