0

髪を引っ張るのにうんざりしています...誰かがこのコードで何が起こっているのか教えてもらえますか?

基本的に、私はフォームからデータを取得しようとしています。コントローラー、モデル、ビューを何百回もチェックしましたが、動作させるチャンスはありませんでした。すべてのフィールドに入力しても、デバッグ@programの結果は常に次のようになります:BLANK。

 --- !ruby/object:Program attributes:   
id:    
title:    
content:   
active:    
created_at:    
updated_at:

コードは次のとおりです。

コントローラ:

   class ProgramsController < ApplicationController
  def index
    @program = Program.all
  end

  def show
    @program = Program.find(params[:id])
  end

  def create
    @program = Program.new

    if @program.save
      redirect_to 'index'
    else
      render 'new'
    end
  end

  def new 
    @program = Program.new
  end


  def edit
  end

  def destroy
  end
end

モデル:

class Program < ActiveRecord::Base
  attr_accessible :active, :content, :title

  validates :title, presence: true
  validates :content, presence: true

end

意見:

<html>
<head>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
    <title>Program Adding</title>
</head>
<body>

    <% if @program.errors.any? %>
    <% @program.errors.full_messages.each do |msg| %>
    <%= msg %>
    <% end %>
    <% end %>

    <%= form_for(@program) do |p|%>
    <%= p.label :title%><br />
    <%= p.text_field :title %><br />

    <%= p.label :content%><br />
    <%= p.text_area :content %><br />

    <%= p.label :active%><br />
    <%= p.text_field :active %><br />

    <%= p.submit %>

    <% end %>

    <%= debug @program %>

</body>
</html>

ありがとうございました

4

1 に答える 1

2

フォームの値をcreateアクションに渡していないように見えます。

@program = Program.new

その行を次のように置き換えてみてください

@program = Program.new(params[:program])

これはすべて、標準のRESTfulルーティングを使用していることを前提としています。

乾杯。

于 2012-09-19T23:09:42.370 に答える