【问题标题】:Adding or updating record with user id使用用户 ID 添加或更新记录
【发布时间】:2014-01-02 19:54:06
【问题描述】:

Ruby on Rails 3,我有一个包含两个 select_tag 提交的编辑页面。一个用户具有属性 :attend = "Yes",另一个用户具有属性 :attend = "No" 或 nil。我正在尝试获取 select_tag 提交来为用户创建或更新证书表。到目前为止,我知道它正在发布用户 ID 和名称。我不知道如何让控制器或模型获取用户 ID 并使用“是”或“否”的 :attend 属性值创建或更新。该应用程序将使用正确的用户 ID 创建一条新记录,但不会使用 :attend,因为它不在我的 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

您如何设置控制器以使用 :attend 为“是”来创建或更新新记录? 您如何使用 :attend as "No" 更新记录? 谢谢

【问题讨论】:

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


    【解决方案1】:

    你在控制器中试过了吗

    if @trained.save
    

    @trained.update_attributes(attend: "yes")
    

    或者没有,取决于你想要的类型。

    也可以看看这个rails中的create/update方法。

    create_or_update method in rails

    【讨论】:

    • 你能告诉你如何检查吗?如果您在 Rails 正在从数据库中提取它的页面中看到它。在您的控制器中,您将拥有 @trained = Certificate.new(params[:certificate]) @trained.update_attributes(attend: "yes")
    • 我的日志显示 POST 保存到数据库。不记录更新属性。当我运行 Certificate.all 时,所有记录都显示为零。我的视图在循环中使用了几个实例变量。我什至有一个 if 语句检查“是” Certificate.find_by_user_id(@trained_user_id).attend == "Yes" 并在我的视图中显示它们???
    • 尝试将此添加到您的表单 "Yes" %> 然后检查参数并使用该参数更新列。
    • 我不确定我会在哪里添加 hidden_​​field,因为这是一个 select_tag。另外,我发现我的观点并不关心参加者是否为零。它仅显示用户是否有带有其用户 ID 的记录。所以attend属性没有保存。
    • 调用update_attribute时的日志是什么。如果您在开发环境中,您应该会看到正在执行更新 sql 查询。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 2014-07-01
    • 1970-01-01
    • 2013-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多