所以我有一个使用simple_form gem的RoR表单,奇怪的是,如果我将一个字符串放在表中具有整数类型的字段中,它甚至不会被发送,它只是发送一个空字符串即使我把'sdfsd'放在那里,为什么会这样?
形式:
= simple_form_for :product do |p|
= p.input :price
= p.button :submit
数据库表:
create_table :products do |t|
t.integer :price, null: false
end
型号:
class Product < ActiveRecord::Base
validates :price, presence: true, inclusion: {in: 1..100}
end
所以如果在价格字段中键入'blah blah',它会发送:
参数:{“product”} =&gt; {“price”=&gt; “”}
答案 0 :(得分:0)
您需要提供代码,但要为您提供消化内容,simple_form
documentation显示您可以使用f.input :attribute_name
,如下所示:
<%= simple_form_for @user do |f| %>
<%= f.input :username %>
<%= f.input :password %>
<%= f.button :submit %>
<% end %>
这应该采用属性字段类型,并在其周围创建一个字段。
-
当你提到你有一个integer
字段,并且它没有被发送时,有3个潜在的问题你应该确保你没有&#39;犯规:
attribute
吗? (可能忘了运行rake db:migrate
,尽管不太可能form
中的属性?strong_params
方法将数据传递给您的模型?我猜测你的问题是#3 - 修复,你应该这样做:
#app/controllers/your_controller.rb
Class YourController < ApplicationController
def create
@model = Model.new(model_params)
@model.save
end
private
def model_params
params.require(:model).permit(:attributes)
end
end