問題:
フォーム ヘルパーを使用して、チェックボックス付きのフォームを作成したいと考えています。私のブログ投稿には、「承認済み」というブール属性があります。このモデルは、ActiveRecord::Base ではなく、私の別のモデル (Post) から継承しています。この構成では、NoMethodError が発生します。
ファイル:
チェックボックスのあるフォーム:
<%= form_for @blog_post do |f| %>
<div class="field">
<!-- throws undefined method `approved' for #<BlogPost:0x00000002600d40> -->
<%= f.check_box :approved %>**
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
ブログ投稿コントローラー:
# GET /blog_posts/new
def new
@blog_post = BlogPost.new
end
投稿モデル:
class Post < ActiveRecord::Base
end
ブログ投稿モデル:
class BlogPost < Post
end
「承認済み」は、BlogPost クラスの属性です。Post クラスには、BlogPost クラスで使用したい追加の属性がいくつかあります。AnswerPost (< Post) クラスもあります。
私が試したこと:
check_boxメソッドのドキュメントは私を混乱させ、check_box_tag ヘルパーも機能しません。移行も問題ありません。「承認済み」パラメーターは許可されています。
params.require(:blog_post).permit(:approved)
手掛かり:
私にとって奇妙なことは、 BlogPost が Post の代わりに ActiveRecord::Base を継承すると、フォーム ヘルパーが機能することです。ここで重要なことを見逃しましたか?