2011-03-31 1 views
2

これは私の最初のRailsプロジェクトです。何らかの理由で、同じテーブルの他の列は正常に機能しますが、データベースの1つの列には投稿できません。 (同じテーブルの他の列にデータを入力したときにFakerの宝石を使用してその列にデータを設定することはできませんでしたので、データベースに入り、手で入力するだけでした)。Ruby on Rails form_forデータベースへの投稿は1つのカラムでは機能しませんが、同じテーブル内の他のユーザ向けです

私のデータベースには、 "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 %> 

私articles_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 

私がフォームを送信しようと、それは私の見出しの検証上のいずれかをキャッチ(:存在=>真)、または私がバリデーションをコメントアウトしている場合は見出しなしで提出するだけです。投稿は次のパラメータを送信しています:

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

見出しがあるようです。 user_idを含め、他のすべての列が入力されます。なぜ見出しには記入されませんか?移行しても、私の移行にreset_column_informationを追加しました:私は、すくいデシベルを実行した

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

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

また、私がレールコンソールに入り、そのように新しい記事を追加すると、見出しを問題なく追加できます。

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

答えて

2

私は数日間これをやってきました。私はそれを投稿したらすぐに解決しました。私のarticle.rbでは、私が持っていた:

attr_accessible :content, :heading 

attr_accessible :content 

私はそれを変更しなければなりませんでした