2011-07-27 13 views
2

PostsControllerのdef createで、ブール値のためにカラムに渡された値にアクセスしたいという意味です。投稿を作成するときに、この値を設定するチェックボックスがあります。チェックされたものは同意する(1)、チェックされないものは同意しない(0)。今すぐこの値にアクセスするにはコードparams[:post][:agree]がありますが、それはうまくいかないようです。 if文でそれを使用しようとすると、params [:post] [:agree]が常にtrueに評価されるように、文が常に発生します。投稿を作成するときにパラメータにアクセスするにはどうすればいいですか?

ヘルプ!なぜこれは動作しませんか?

:EDIT:

Post.rb(ポストモデル)

attr_accessor :agree 
attr_accessible :agree 

のPostController(DEFで作成)

@post.title = "AGREED!!" if params[:post][:agree] == "1" 

答えて

3

、数0"0"はブール値のコンテキストでfalseに評価された文字列でもありません。試してみてくださいif (params[:post][:agree]=="1")

+0

あなたはデータベースの列の種類について話していると仮定すると、より良いブールです。そうすれば、あなたのモデルは期待どおりに動作します。 IIRC Railsは、モデルを初期化するときにパラメータを変換する必要があります。 –

+0

多分あなたのコードのいくつかを質問に含める必要があります、私はそれがどのように見えるかを視覚的に苦労しています。モデルとコントローラの関連部分(そしておそらくDB移行/スキーマの関連部分)を提供できますか? –

1

Railsは、デフォルトでチェックボックスの両方を作成します(value="1")と隠れた入力要素(value="0")があるので、私は個人的に私は愚かであり、それを上書きすると思うサーバーに戻って値を取得します。代わりにparams[:post][:agree].blank?かどうかを確認してください。

私はあなたの質問全体を理解しているとは完全にはわかりません。フォームのデータだけを話していたのですか、モデルについて話していますか? Rubyで