初心者です・
現在ユーザーが記事の投稿をできるサイトをRuby on Railsで練習で作っています。
articleというテーブルをmysqlに作り、そこに記事の内容,画像、など全てのカラムを入れていましたが、テーブルは分けたほうがいいということを知ったので、article_detailsというテーブルを作り、
"article"テーブルには
|id | int(11) | NO | PRI | NULL
| approved_at | datetime(6) | YES | MUL | NULL
| published_at | datetime(6) | YES | MUL | NULL
| deleted_at | datetime(6) | YES | MUL | NULL
| created_at | datetime(6) | NO | | NULL
| updated_at | datetime(6) | NO | | NULL
| user_id | int(11) | NO | MUL | NULL
のみにして、
"article_details"テーブルには
| id | int(11) | NO | PRI | NULL
| article_id | int(11) | NO | MUL | NULL
| seq | int(11) | NO | | NULL
| image_url | varchar(2048) | NO | | NULL
| title | varchar(256) | NO | | NULL
| lead | varchar(256) | NO | | NULL
| description | text | NO | | NULL
| created_at | datetime(6) | NO | | NULL
| user_id | int(11) | NO | MUL | NULL
を入れました。
そしてmodelで紐付けをしました。
models/article_deails.rb
RubyonRails
1 2class ArticleDetails < ActiveRecord::Base 3 belongs_to :Article 4end 5
models/article.rb
class Article < ActiveRecord::Base has_many :article_details end
しかし
RubyOnRails
1<%= form_for(@note, class: 'form-horizontal', role: 'form' ) do |f| %> 2 3 <h2>記事を投稿</h2> 4 5 <table class="newpost"> 6 <tr> 7 <th> <p>'サービスのタイトル'</p></th> 8 <td> 9 <%= f.text_field :title, class: 'form-control' %> 10 </td> 11 </tr> 12<%= f.submit '作成する', class: 'btn btn-default', data:{ disable_with: "作成中・・・"} %> 13 14<% end %>
で
NoMethodError in Articles#new
undefined method `title' とエラーが出ます。
has_manyとbelong_toだけではテーブル間の紐付けはできないのでしょうか?
もし、何か抜かしてることがあれば教えていただきたいです。
追記
こちらの記事を見て
http://d.hatena.ne.jp/kasei_san/20120402/p1
コントローラーにArticle.find(:all, :include => :article_details)を記入しましたが、
Couldn't find all Articles with 'id': (title, {:include=>:note_revisions}) (found 0 results, but was looking for 2)
とエラーが出ました。
article_controller.rb
def new Article.find(:all, :include => :article_details) end
こちらの記事の通り試しましたが、エラーはそのまま同じエラーでした。
あなたの回答
tips
プレビュー