使用hidden_​​field更改布尔值

时间:2018-11-08 10:59:45

标签: ruby-on-rails

我向 USER 添加了成员列。

我试图在提交表单时通过hidden_​​field将MEMBER的值更改为false。

但是hidden_​​field的值不起作用! 为什么?

db

class AddMemberToUsers < ActiveRecord::Migration[5.2]
  def change
    add_column :users, :member, :boolean, default: true
  end
end

用户/视图/表单

<%= form_for(resource, as: resource_name,:html => { :id => "new_user_1"}, url: registration_path(resource_name)) do |f| %>
        ...
        <%= f.hidden_field :member, value: false %>
        <%= f.submit "S'inscrire" %>
 <% end %>

用户/注册控制器

class Users::RegistrationsController < Devise::RegistrationsController  
  private
  def sign_up_params
    params.require(:user).permit(:name, :fullname, :email, :password, :password_confirmation, :member)
  end

  def account_update_params
    params.require(:user).permit(:name, :fullname,:avatar,:job, :email, :password, :password_confirmation, :current_password)
  end
end

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

hidden_field表现为隐藏的text_field,因此,它需要一个字符串值。我建议您传递一个文本值,您可以在控制器内部将其视为假值。

两个都使用值0/1

OR

另一种方式是:

示例:

 
def sign_up_params
  params[:user][:member] = params[:user] && params[:user][:member] == '0' ? false : true
  params.require(:user).permit(:name, :fullname, :email, :password, :password_confirmation, :member)
end

您可以在控制器内部手动处理此问题。