2016-07-30 29 views
0

Ich schreibe ein CMS und ich stellte ein Problem beim Erstellen einer Rollenverwaltung für Benutzer. Ich habe ein boolesches Feld :admin in meinem User Modell, und ich habe ein Kontrollkästchen in meinem Formular, um den erstellten Benutzer als Administrator festzulegen. Hier ist die users_controller:Checkbox "NoMethodError" in Schienen

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 

und dies ist meine Form:

<%= 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 %> 

Aber jede dieser Optionen gibt mir folgendes:

NoMethodError in Multiflora::Users#edit 

undefined method `merge' for "":String 

Was ich falsch gemacht habe?

+0

Sie wollen für Rollen Tag ausgewählt haben Sie erstellen 'Enum 'Formularrolle – uzaif

+0

Verborgenes Feld übernehmen a s '<% = f.hidden_field: admin, value: ''%>' oder einfach '<% = f.hidden_field: admin%>' – Sravan

Antwort

2

verstecktes Feld nehmen, wie

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

oder einfach

<%= f.hidden_field :admin %>

und Checkbox als <%= 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

Das hat funktioniert, danke! – AlexNikolaev94