2016-10-31 83 views
0

我需要一个包含1个单选按钮,1个提交按钮和每个列出项的复选框的表单。一次提交多次保存

提交后,表单应为每个检查项目保存单独的记录。每个保存的项目都应该包含单选按钮的值以及其他隐藏值。

表单呈现,但在提交时崩溃。该错误信息是:

undefined method `permit' for #<Array:0x007fb4b3b1a520> 

我的代码是:

 <%= form_tag(controller: "handoffs", action: "create", method: "post") %> 
      <%= radio_button_tag(:attend, "arrive") %> 
      <%= label(:handoff_arrive, "drop-off") %> 
      <%= radio_button_tag(:attend, "depart") %> 
      <%= label(:handoff_depart, "pick-up") %> 

      <% @parent.children.each do |child| %> 
       <%= check_box_tag "handoff[][check]" %> 
       <strong> 
       <%= child.fname %> 
       <%= child.mname %> 
       <%= child.lname %> 
       </strong><br> 

       <% group = Group.find(child.group_id) %> 

       <%= hidden_field_tag "handoff[][attend]" %> 
       <%= hidden_field_tag "handoff[][group_name]", :value => group.name %> 
       <%= hidden_field_tag "handoff[][child_id]", :value => child.id %> 
       <%= hidden_field_tag "handoff[][center_id]", :value => @center.id %> 
       <%= hidden_field_tag "handoff[][escort_fname]", :value => @parent.fname %> 
       <%= hidden_field_tag "handoff[][escort_lname]", :value => @parent.lname %> 
       <%= hidden_field_tag "handoff[][child_fname]", :value => child.fname %> 
       <%= hidden_field_tag "handoff[][child_mname]", :value => child.mname %> 
       <%= hidden_field_tag "handoff[][child_lname]", :value => child.lname %> 
      <% end %> 
      <%= button_to :submit, :class => 'f_submit' %> 
     <% end %> 

控制器操作:

def new 
    @handoff = Handoff.new 
    @parent = current_parent 
    @center = Center.find(@parent.center_id) 
    end 

    def create 
    params["handoff"].each do |handoff| 
     if params[:handoff["check"]] != "" 
     @handoff = Handoff.new(handoff_params) 
     @handoff.save 
     end 
    end 
    end 

    def handoff_params 

    params.require(:handoff).permit(:attend, :group_name, :child_id, :center_id, :escort_fname, :escort_lname, :child_fname, :child_mname, :child_lname) 
    end 

请求参数(错误报告)

{"utf8"=>"✓", 
"authenticity_token"=>"snqrS130bXNV4bmMHOMlXeyhX2rWFVpmY/PYIv0jn97MBOLSWWw2jBbeYGPyjt7O9l5pRVNuFiu1qOwkGpELTA==", 
"attend"=>"depart", "handoff"=>[{"check"=>"1", "attend"=>"", 
"group_name"=>"{:value=>\"Gifted\"}", "child_id"=>"{:value=>60}", 
"center_id"=>"{:value=>4}", "escort_fname"=>"{:value=>\"Richard\"}", 
"escort_lname"=>"{:value=>\"Messing\"}", 
"child_fname"=>"{:value=>\"Aaron\"}", 
"child_mname"=>"{:value=>\"Lawrence\"}", 
"child_lname"=>"{:value=>\"Schwartz\"}"}, {"check"=>"1", "attend"=>"", 
"group_name"=>"{:value=>\"Arts & Crafts\"}", 
"child_id"=>"{:value=>61}", "center_id"=>"{:value=>4}", 
"escort_fname"=>"{:value=>\"Richard\"}", 
"escort_lname"=>"{:value=>\"Messing\"}", 
"child_fname"=>"{:value=>\"Joseph\"}", 
"child_mname"=>"{:value=>\"Michael\"}", 
"child_lname"=>"{:value=>\"Messing\"}"}], "method"=>"post", 
"controller"=>"handoffs", "action"=>"create"} 
+0

我解决了这个问题。案件结案。 – Rick

回答

0

我有类似的案件。首先,您需要创建包含您想要导出的所有值的数组,我使用helper来执行此操作。我会告诉你我的例子:

def get_table_of_keywords(keywords) 
    exact_keywords = [] 
    keyword_array.each do |key| 
     if !key.blank? 
     exact_keywords << {keyword: key, created_at: DateTime.now.in_time_zone, updated_at: DateTime.now.in_time_zone } 
     end 
    end 
    exact_keywords 
    end 

,并且您使用的创建

@inserted_keywords = @campaign.keywords.create(get_table_of_keywords(params[:keyword][:keyword])) # add new keywords to the list 
+0

感谢您的反馈。为了在params中创建散列数组,我在表单field_tags(handoff [] ...)中有[]括号。错误报告显示正在创建数组。但我不认为我的代码在创建操作正确访问数组。我不明白为什么我会收到错误:'未定义的方法许可'。 – Rick