私は何をしましたか:
- 新しいルビーアプリを作成する
rails new campaigns_manager
- campaigns_managerディレクトリに移動し、最初のスキャフォールドキャンペーン
rails generate scaffold campaign name:string
を生成して移行します - ルートルートを追加
root to: 'campaigns#index', as: 'campaigns'
そのようないくつかのコード文字列。次に、サーバーを起動してテストします。見た目も動作も問題ありませんが、新しいキャンペーンを追加しようとしても、何も保存されません。[キャンペーンの作成]ボタンを押すと、コンソールに次のようなメッセージが表示されます。
Started POST "/" for 127.0.0.1 at 2012-04-25 22:30:40 +0300
Processing by CampaignsController#index as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"sKom3YBDEbOcqbSt3gLGWPqBNeqkEw6M59hlwrmH4tM=", "campaign"=>{"name"=>"test"}, "commit"=>"Create Campaign"}
Campaign Load (0.3ms) SELECT "campaigns".* FROM "campaigns"
Rendered campaigns/index.html.erb within layouts/application (0.9ms)
Completed 200 OK in 37ms (Views: 35.4ms | ActiveRecord: 0.3ms)
次に、キャンペーンリストにリダイレクトしますが、新しいキャンペーンはありません。db\development.sqlite3のテーブルキャンペーンは空です。さらに、キャンペーンコントローラに印刷メソッド
を追加して、正しいメソッドを呼び出すかどうかを確認します。そして、「キャンペーンの作成」ボタンを押しても、その作成メソッドは呼び出されません。
私のキャンペーン/新しいビュー:
<h1>New campaign</h1>
<%= form_for(@campaign) do |f| %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
<%= link_to 'Back', campaigns_path %>
キャンペーンをデータベースに保存できないのはなぜですか?