表单字段值不会被发送

时间:2014-06-07 08:53:41

标签: ruby-on-rails forms request

所以我有一个使用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; “”}

1 个答案:

答案 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;犯规:

  1. 您的数据库中有attribute吗? (可能忘了运行rake db:migrate,尽管不太可能
  2. 您是否正确调用form中的属性?
  3. 您是否允许使用strong_params方法将数据传递给您的模型?
  4. 我猜测你的问题是#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