0

我有一個名爲Directive的模型屬於User模型,Directive模型有5個字段(字符串)。我創建了一個form_for,每個字段有5個複選框,每個複選框都有一個數字值。Rails 4清單表格+驗證

到目前爲止,這麼好。問題是我嘗試提交表單時。我檢查的複選框不會在錯誤中持續存在,而且他們也不會被冒名頂替。我的參數是空白的。

它雖然工作正常,單選按鈕。我的形式的

實施例:

<%= form_for(@directive, url: dashboard_directives_path(:type => params[:type]), html: {method: "post", class: "form-horizontal"}) do |f| %> 

    <%= f.check_box :place, "1" %> 
    <%= f.check_box :place, "2" %> 
    <%= f.check_box :place, "3" %> 
    ... 
    <%= f.check_box :field2, "1" %> 
    ... 

<% end %> 

這是我的控制器操作:

def new 
    @directive = current_member.directives.new 
end 

def create 
    @directive = current_member.directives.new(directive_params) 
    if @directive.save 
    redirect_to dashboard_path, :success => "Directive created with success!" 
    else 
    render "new" 
    end 
end 

在我的控制器的PARAMS:

private 

def directive_params 
    if params[:directive].present? 
    params.require(:directive).permit(:place, :field2, :field3, :field4, :field5) 
    else 
    params.fetch(:directive, {}) 
    end 
end 

和模型:

class Directive < ActiveRecord::Base 
    belongs_to :members, :class_name => 'Member', :foreign_key => 'member_id' 
    validates :place, :field2, :field3, :field4, :field5, presence: true 
end 
如下
+0

由於這將需要相當多的調試,讓我們來討論這個上聊天chat.stackoverflow.com/rooms/48530/ ROR –

回答

1

更改directive_params

注意:合格「place`作爲數組也強制作爲最後一個參數。

def directive_params 
    if params[:directive].present? 
    params.require(:directive).permit(:field2, :field3, :field4, :field5, :place => []) 
    else 
    params.fetch(:directive, {}) 
    end 
end 

將'place'作爲數組傳遞。

並在您的模型中Directive通過添加serialize :place來對其進行序列化。


此外,我不得不改變我的複選框看起來像這樣:

<%= f.check_box :place, {:multiple => true}, "1", nil %>