2016-07-30 48 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

要選擇角色標籤並創建'枚舉'形式角色 – uzaif

+0

以隱藏字段a s'<%= f.hidden_​​field:admin,value:''%>'或乾脆''%= f.hidden_​​field:admin%>' – Sravan

回答

2

以隱藏字段作爲

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

或者乾脆

<%= f.hidden_field :admin %>

和複選框爲<%= 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