2

これは私の最初の Rails プロジェクトです。何らかの理由で、データベースの 1 つの列に投稿できませんが、同じテーブルの他の列は正常に機能します。(同じテーブル内の他の列にデータを入力したときに、Faker gem を使用してその列にデータを入力することもできませんでした。そのため、データベースに移動して手動で入力しただけで、それを通り越すことができました。)

私のデータベースには、列「id」「content」「user_id」「created_at」「updated_at」および「heading」を持つテーブル「articles」があります。新しい記事を作成するための私のフォームは次のようなものです:

<%= form_for @article do |f| %>
  <div class="field">
    <%= f.text_field :heading, :size => "60x1" %>
  </div>
  <div class="field">
    <%= f.text_area :content, :size => "60x24" %>
  </div>
  <div class="actions">
    <%= f.submit "Submit" %>
  </div>
<% end %>

私の article_controller には次のものがあります。

def new
 @article = Article.new
end

def create
 if @article = current_user.articles.create!(params[:article])
   redirect_to root_path, :flash => { :success => "Article created!" }
 else
   redirect_to "/articles/new"
 end
end

フォームを送信しようとすると、見出しの検証 (:presence => true) をキャッチするか、検証をコメントアウトすると見出しなしで送信されます。投稿はこれらのパラメータを送信しています:

{"utf8"=>"✓",
"authenticity_token"=>"...",
"article"=>{"heading"=>"Test heading",
"content"=>"Test content"},
"commit"=>"Submit"}

見出しがあるようです。user_id を含む他のすべての列が入力されます。見出しが埋まらないのはなぜですか?rake db:migrate を実行し、reset_column_information を移行に追加しました。

def self.up
 add_column :articles, :heading, :string
 Article.reset_column_information
end

しかし、それはどちらの方法でも機能しませんでした。

また、Rails コンソールに移動して新しい記事を追加すると、問題なく見出しを追加できます。

問題があれば、私は SQLite を使用しています。後の移行で見出し列を追加しましたが、列の順序が最後になるのは問題でしょうか?

4

1 に答える 1

2

私はこれを何日も調べてきましたが、実際に投稿するとすぐに解決しました。私のarticle.rbには、次のものがありました。

attr_accessible :content

私はそれを次のように変更しなければなりませんでした:

attr_accessible :content, :heading
于 2011-04-01T00:15:03.570 に答える