控制器检查记录是否存在,如果存在则发送到update()

DDDD

我的表单正在创建一个新记录,但我希望它先检查user_id是否存在,如果存在则发送更新。

我在编辑网页中的表单:

<%= form_for @trained, :url => certificates_path, :method => :post 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 "Train", class: "btn btn-large btn-primary" %>
<% end %>

我在控制器中的edit(),似乎忽略了我的if语句,如果找不到记录,则会出错。我如何首先检查现有记录,然后将其发送到update()?

if @trained = Certificate.find(params[:certificate])
else
  @trained = Certificate.new(params[:certificate])
end

这是我的资源控制器,实际上正在执行工作。

class CertificatesController < ApplicationController

  def create

    @trained = Certificate.new(params[:certificate])
    if @trained.save
      @trained.update_attributes(attend: "Yes")
    end
    redirect_to grandstreamers_resellers_path

  end

  def update
    @trained = Certificate.where(user_id: params[:certificate][:user_id])
    @trained.first.update_attributes(attend: "No")
    @untrained = Certificate.where(user_id: params[:certificate][:user_id])
    @untrained.first.update_attributes(attend: "No")
    redirect_to grandstreamers_resellers_path
  end

end
乔恩

如果不作为条件语句的一部分执行变量赋值,我通常会倾向于寻找代码清理器。但是,如果要避免在初次查找之后进行第二次分配,可以按以下步骤进行。

我建议更改这些行:

if @trained = Certificate.find(params[:certificate])
else
  @trained = Certificate.new(params[:certificate])
end

像这样:(注意参数的变化……您应该使用ID或其他属性来查找证书,而不是使用整个参数的哈希值)

@trained = Certificate.find_by_id(params[:id]) || Certificate.new(params[:certificate])

当然,您也可以使用该find_or_create_by方法...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

检查在Rails控制器中是否存在记录

来自分类Dev

如何将表单数据发送到控制器以发出Ajax请求以将数据保存在Db中

来自分类Dev

将对象数组发送到MVC控制器

来自分类Dev

Thymeleaf将参数从html发送到控制器

来自分类Dev

将数据从Sails Service发送到控制器

来自分类Dev

MVC将数据从视图发送到控制器

来自分类Dev

将多个查询发送到Webapi控制器

来自分类Dev

将变量从控制器发送到刀片

来自分类Dev

将数据从PC发送到微控制器

来自分类Dev

通过Ajax将数据发送到控制器

来自分类Dev

ajax将数据发送到控制器

来自分类Dev

将数据从控制器发送到js函数

来自分类Dev

将JSON对象发送到Spring控制器

来自分类Dev

将数据从jQuery发送到AngularJS的控制器

来自分类Dev

参数不是从指令发送到控制器吗?

来自分类Dev

将数据从服务发送到控制器

来自分类Dev

将数据从.gsp发送到控制器

来自分类Dev

尝试将值从HTML发送到控制器

来自分类Dev

将数据从控制器发送到指令

来自分类Dev

如何将参数发送到控制器

来自分类Dev

将数据从 ajax 发送到控制器 codeigniter

来自分类Dev

将 Json 对象发送到 Spring 控制器

来自分类Dev

将匿名类型从控制器发送到服务

来自分类Dev

将数据从 jQuery 发送到 Laravel 控制器

来自分类Dev

MVC 5是否存在控制器

来自分类Dev

将数据从主HTML页面控制器发送到指令控制器

来自分类Dev

从控制器1将消息发送到控制器2

来自分类Dev

Rails:检查控制器中是否不存在ID?

来自分类Dev

如何检查控制器中是否已存在用户?