PG :: DatatypeMismatch:错误:WHERE的参数必须为布尔型,而不是整数

时间:2019-01-30 11:37:45

标签: ruby-on-rails ruby postgresql

我在生产站点中遇到此错误,这是我视图中的代码

<%= form_for [:admin, @course], :remote => true do |f| %>
  <%= f.label :name %>
  <%= f.text_field :name %>
  <%= f.label :duration %> 
  <%= f.number_field :duration, class: "input-md form-control mb-20"%> 
  <%= f.label :program_id %> 
  <%= f.collection_select :program_id, Program.where('id'), :id, :name, {}, {class: "input-md form-control mb-20" } %>
<%end%>

这在我具有sql db安装程序的本地服务器中有效。

Program model
     has_many :courses 

有人可以引导我吗?

1 个答案:

答案 0 :(得分:1)

Where子句未调用任何要比较的内容,因此PG不知道结果中要包括什么。 where子句的求值必须为true / false。

只需替换

<%= f.collection_select :program_id, Program.where('id'), :id, :name, {}, {class: "input-md form-control mb-20" } %>

作者

<%= f.collection_select :program_id, Program.all, :id, :name, {}, {class: "input-md form-control mb-20" } %>

如果您对数据库中的某些“程序”有疑问,请在“程序”表中添加一列作为状态并在此处进行更改

<%= f.collection_select :program_id, Program.where("status =?", true), :id, :name, {}, {class: "input-md form-control mb-20" } %>