使用用户ID添加或更新记录

时间:2014-01-02 19:54:07

标签: ruby-on-rails ruby ruby-on-rails-3 activemodel

Ruby on Rails 3,我有一个包含两个select_tag提交的编辑页面。一个用户具有属性:attend =“Yes”,另一个用户具有属性:attend =“No”或nil。我正在尝试获取select_tag提交,以便为用户创建或更新Certificate表。截至目前,我知道它正在POST用户ID和名称。我不知道如何让控制器或模型获取用户ID并使用:attend属性值“Yes”或“No”创建或更新。该应用程序将创建一个具有正确用户ID的新记录,但不会出现:参加,因为它不在我的select_tag提交中。

这是我的编辑:

<%= form_for @untrained do |f| %>
            <p> Trained Users </p>
            <%= select_tag "certificate[user_id]", options_for_select(@current_trained.collect{|x| [x.name, x.id]}), {:multiple => :multiple} %>
            <%= f.submit "Un-Train", class: "btn btn-large btn-primary" %>
        <% end %>
        <%= form_for @trained do |f| %>
            <p> Non-Trained Users </p>
            <%= select_tag "certificate[user_id]", options_for_select(@non_trained.collect{|x| [x.name, x.id]}), {:multiple => :multiple} %>
            <%= f.submit "Trained", class: "btn btn-large btn-primary" %>
        <% end %>

这是我的控制器:

@trained = Certificate.new(params[:certificate])
@untrained = Certificate.update(params[:user_id])

这是我的模特:

attr_accessible :attend, :pass, :user_id
belongs_to :user
validates :user_id, presence: true

如何设置控制器以创建或更新新记录:参加“是”? 你如何更新记录:参加“否”? 谢谢

1 个答案:

答案 0 :(得分:1)

你在

后尝试过控制器吗?
if @trained.save

@trained.update_attributes(attend: "yes")

或否,取决于您想要的类型。

另请参阅rails中的create / update方法。

create_or_update method in rails