从一个check_box_tag保存数据数组

时间:2013-04-06 20:58:38

标签: ruby-on-rails api

我查看了从сontributedAPI

创建的视图
=form_tag add_group_vk_vk_entries_path, method: :put do
  -length_of_array = @vk_groups['message']['vk'].length
    .row-fluid
      -@vk_groups['message']['vk'][1..length_of_array].each do|item| 
        .span4
          p= check_box_tag "vk_groups[]", item['gid']
          p=item['name']
          p=image_tag item['photo'], :size => "100x100",:class => "img-circle"
= submit_tag "ok" 

我想通过check_box_tag将此api中的数据发送到我的控制器。我不仅要发送项目['gid']我想发送给我的控制器我通过一个check_box_tag检查的所有数据,但我不了解如何。

在我的控制器中

def add_group_vk
    params[:vk_groups].each do |item|
      if VkEntry.not_exists?(item) == true
        VkEntry.create!(
           :git => item
          )
      end
    end
    redirect_to vk_entries_url
  end

我想要这样的东西

def add_group_vk
    params[:vk_groups].each do |item|
      if VkEntry.not_exists?(item) == true
        VkEntry.create!(
           :git => item[:gid],
           :name=> item[:name],
           :ser=> item[:ser],
           :photo=> item[:photo]
          )
      end
    end
    redirect_to vk_entries_url
  end

2 个答案:

答案 0 :(得分:1)

首先,我假设您的上面生成的复选框的名称如下:

vk_groups[100], vk_groups[101],...

你真正可以提取的是一个id的列表,它们在哈希键中,值并不重要。

params [:vk_groups]将产生一个哈希值,如此反复遍历哈希

def add_group_vk
  params[:vk_groups].each do |key,val|
  if VkEntry.not_exists?(key) == true
    VkEntry.create!(
       :git => key,
       :name=> item[:name],
       :ser=> item[:ser],
       :photo=> item[:photo]
      )
  end
end
redirect_to vk_entries_url

结束

答案 1 :(得分:0)

结果我完成了:

def add_group_vk
    params[:vk_groups].each do |key,val|  

      item = eval val

      if VkEntry.not_exists?(key) == true

        VkEntry.create!(
            :gid          => key,
            :name         => item['name'],
            :screen_name  => item['screen_name'],
            :is_closed    => item['is_closed'],
            :is_admin     => item['is_admin'],
            :is_member    => item['is_member'],
            :type_vk      => item['type_vk'],
            :photo        => item['photo'],
            :photo_medium => item['photo_medium'],
            :photo_big    => item['photo_big']
          )
      end
      end
     redirect_to vk_entries_url
  end

在视图中

p= check_box_tag "vk_groups[#{item['gid']}]", item