2014-06-07 2 views
2

그래서 단순한 보석을 사용하는 RoR 양식이 있는데, 이상한 일은 테이블에 정수 유형이있는 필드에 문자열을 입력하면 보내지도 않는다. 거기에 'sdfsd'와 같은 것을 넣어도 빈 문자열. 왜 그렇게됩니까?양식 필드 값이 보내지지 않는다

형태 :

= simple_form_for :product do |p| 
= p.input :price 
= p.button :submit 

DB 테이블 :

create_table :products do |t|  
    t.integer :price, null: false 
end 

모델 :

class Product < ActiveRecord::Base 

    validates :price, presence: true, inclusion: {in: 1..100} 

end 

그래서 가격 필드에 입력 'ㅋ ㅋ ㅋ ㅋ이'가 보내드립니다 경우 :

매개 변수 : { "product"} => { "p 쌀 "=>" "}

+2

일부 코드는 우리가 더 나은 서비스를하기 위해 도움이 될 :) –

+0

저도 같은 문제가 있습니다을. 문자 값이 전송되지 않아 오류 메시지를 확인하고 제공 할 수있는 기회가 박탈당하는 것은 이상한 일입니다. 이 문제를 해결할 방법을 찾았습니까? – KenB

답변

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 잠재적 인 문제가있다 "전송되지 않습니다"당신은 당신의 파울 하락하지 않은 확인해야합니다 :

  1. db에 attribute이 있습니까? (가능성이 있지만
  2. 당신은 제대로 form의 속성을 호출, rake db:migrate을 실행하는 잊어 버린 수있다?
  3. 당신이 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 
+0

답변 주셔서 감사합니다, 내가 무슨 뜻인지 설명하기 위해 질문에 약간의 코드 스 니펫을 추가했습니다. 그리고 필드에 숫자를 입력하면 유효합니다. 유효성 검사를 받으면 올바른 결과가 저장됩니다.하지만 번호 대신에 문자열을 보내려고하면 서버가 유효성 검사를하지 않고 그냥 빈 문자열로 바뀌어 버린다 ... 나는 그걸로 어떤 문제도 가지지 않고 그냥 왜 이런 식으로 일어 났는지 궁금하다 .... – JustMichael

+0

아마도 이것은 당신은 그것을 데이터베이스에서'integer'로 설정했습니다. 'string'을 처리하기 위해'integer'를 어떻게 기대할 수 있습니까? 'simple_form' 대신에'form_for'를 사용했다면'string'을'integer' 필드 타입으로 저장할 수 없다는 에러를 보게 될 것입니다. –

+0

나는 그 모든 것을 이해합니다. 최소한 서버에 보내고 유효성 검증 오류 – JustMichael

관련 문제