2016-10-31 5 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

Я была похожа дело. Сначала вам нужно создать массив со всеми значениями, которые вы хотели бы экспортировать. Я использовал помощник для этого. Я покажу вам мой пример:

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

Благодарим вас за отзыв. У меня есть [] скобки в форме field_tags (handoff [] ...), чтобы создать массив хэшей в параметрах. Отчет об ошибке показывает, что массив создается. Но я не думаю, что мой код в действии create правильно обращается к массиву. И я не понимаю, почему я получаю ошибку: «undefined method allow». – Rick

 Смежные вопросы

  • Нет связанных вопросов^_^