1

Rails 3.2.13にアップグレードし、古いアプリを新しい環境(ruby1.9.3)で実行するように移行しています。アプリはruby192とrails3.0.0で正常に動作しました。

新しいレコードを作成しようとしたときにこのエラーが発生しました(消防士)

引数の数が間違っています(2の場合は3)

そして、これが私のフォームのコードです

<%= form_for :fire_fighter, @fire_fighter, :url => { :action => "create" } do |f| %>

他の投稿を読んだことに基づいて、「fire_fighter」を削除することをお勧めしますが、次のようになります

<%= form_for :@fire_fighter, :url => { :action => "create" } do |f| %>

これにより実際にページをレンダリングできましたが、テキストフィールドに入力してデータベースにレコードを送信または作成しようとすると、アプリに組み込まれている次のようなエラーメッセージが表示されます。フィールドがすべて空白のままになったこと

すべてのフィールドは文字列として設定されます。

ああ、そして明らかに私は提出を押す前にこれらすべてのフィールドに記入してもらいました。だから今私は立ち往生しています。

どんな助けでもありがたいです。

4

1 に答える 1

5

ページのソースコードと残りのフォームコードを投稿すると、この回答が変わる可能性がありますが、インスタンス変数からシンボルを作成しようとしています。

<%= form_for :@fire_fighter, :url => { :action => "create" } do |f| %>

注意してください:@fire_fighter。本当にそうあるべきです@fire_fighter。正しいコードは次のようになります

<%= form_for @fire_fighter, :url => { :action => "create" } do |f| %>

のようなインスタンス変数を使用する理由@fire_fighterは、コントローラーに次のようなものがあるはずだからです。

def new
  @fire_fighter = FireFighter.new
end

このようにして、フォームはインスタンス変数をコントローラーからフォームに直接取得します。シンボルはコントローラーからビューに渡りませんが、インスタンス変数は渡ります。したがって、メソッド@fire_fighterの最初の引数としてを使用しform_forます。

于 2013-03-26T22:47:26.360 に答える