2016-07-30 6 views
0

私はCMSを作成していますが、ユーザーの役割管理を行う際に問題が発生しました。私はUserモデルでブール値フィールド:adminを持っています。作成したユーザーを管理者として設定するためにフォームにチェックボックスを作っています。ここでusers_controllerです:レールのチェックボックス「NoMethodError」

def create 
    @user = User.create(user_params) 
    respond_to do |format| 
    if @user.save 
     format.html { redirect_to users_path } 
     format.json { head :no_content } 
    else 
     format.html { render :new } 
     format.json { render @user.errors, status: :unprocessable_entity } 
    end 
    end 
end 

def edit 
end 

def update 
    respond_to do |format| 
    if @user.update(user_params) 
     format.html { redirect_to users_path } 
     format.json { head :no_content } 
    else 
     format.html { render :edit } 
     format.json { render @user.errors, status: :unprocessable_entity } 
    end 
    end 
end 

と、これは私のフォームです:

<%= form_for @user do |f| %> 
    # Here go fields for username, email and password 
    <p> 
    <%= f.label "Set as administrator" %> <br /> 
    <%= f.hidden_field :admin, '' %> 
    # I also tried with <%= f.hidden_field :admin, false %> 
    <%= f.check_box :admin, checked = true %> 
    # Or <%= f.check_box :admin, data: { switch: true } %> 
    </p> 
<% end %> 

しかし、これらのオプションのいずれかが私に次の値を返します。

NoMethodError in Multiflora::Users#edit 

undefined method `merge' for "":String 

私が間違って何をしましたか?

+0

として

<%= f.hidden_field :admin, value: '' %>

または単に

<%= f.hidden_field :admin %>

やチェックボックスなど、あなたが '列挙型を作成した隠しフィールドを取りますフォームロール – uzaif

+0

隠しフィールドを取る<%= f.hidden_​​field:admin、value: ''%> 'または単に<%= f.hidden_​​field:admin%>' – Sravan

答えて

2

あなたが役割のためのタグを選択したい<%= f.check_box :admin, :checked => true %>

<%= form_for @user do |f| %> 
    # Here go fields for username, email and password 
    <p> 
    <%= f.label "Set as administrator" %> <br /> 
    <%= f.hidden_field :admin, value: '' %>/<%= f.hidden_field :admin %> 
    <%= f.check_box :admin, :checked => true %> 
    </p> 
<% end %> 
+0

それはうまくいきました、ありがとう! – AlexNikolaev94

関連する問題