复选框以选择多个记录并创建新的关联记录(如果不存在)

时间:2012-04-24 09:31:52

标签: ruby-on-rails

我有以下型号(用户,评论和期间)。我想要做的是在用户索引视图中设置复选框,我可以在其中选择多个用户(或全部),然后单击“创建审核”按钮,点击后,它将:

  1. 检查所选用户是否有审核记录,如果没有为所有选定用户创建一个。
  2. 此外,还会使用period_id为“1”
  3. 更新评论记录

    我不确定如何解决这个问题,非常感谢任何帮助。

    提前谢谢。

    user.rb

    class User < ActiveRecord::Base
      belongs_to :admin
      has_many :reviews
      has_many :periods, :through => :reviews
    
      devise :database_authenticatable, :recoverable, :rememberable, :trackable, :validatable
    
      attr_accessible :email, :password, :password_confirmation, :remember_me,
                      :username, :first_name, :last_name, :role
    end
    

    review.rb

    class Review < ActiveRecord::Base
      belongs_to :user
      belongs_to :period
    
      attr_accessible :employee_comments, :employee_final_comments, :manager_comments, :period_id, :rating, :review_status, :user_id
    end
    

    period.rb

    class Period < ActiveRecord::Base
      belongs_to :admin
      has_many :reviews
      has_many :users, :through => :reviews
    
      attr_accessible :admin_id, :end_date, :period_name, :start_date, :active
    end
    

    更新1

    我已将以下行添加到我的index.html.erb中(基于railscast http://railscasts.com/episodes/165-edit-multiple)),但获取了一个空白列表。如果我删除了form_tag行,我可以看到带有复选框的用户列表。

    应用程序/视图/用户/ index.html.erb

    <% form_tag create_multiple_users_path do %>
      .
      .
      .
      <th><%= check_box_tag "users_ids[]", user.id %></th>
    <% end %>
      .
      .
      .
    <%= submit_tag "Create Reviews for selected users" %>
    

    的routes.rb

    resources :users do
      collection do
        post 'create_multiple'
      end
    end
    

1 个答案:

答案 0 :(得分:1)

要获取使用表单的用户列表,您应该更改

<% form_tag create_multiple_users_path do %>

 <%= form_tag create_multiple_users_path do %>