Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 Rails 3:尝试跟随railscast#17为我的帖子添加流派_Ruby On Rails 3_Model_Checkbox - Fatal编程技术网

Ruby on rails 3 Rails 3:尝试跟随railscast#17为我的帖子添加流派

Ruby on rails 3 Rails 3:尝试跟随railscast#17为我的帖子添加流派,ruby-on-rails-3,model,checkbox,Ruby On Rails 3,Model,Checkbox,我完全按照Railscast的描述进行操作,但使用“类型”而不是“类别”,但每当我发表帖子时,genre\u id显示为NULL,我得到一个警告:不能批量分配属性genre\u id 我的post模型中只有genre\u id,因为这是属性的名称,但是当我将其更改为genre\u id时。我得到了错误 ActiveRecord::语句在PostsController中无效#create找不到表'genres\u posts' 邮政表格 后模型 class Post

我完全按照Railscast的描述进行操作,但使用“类型”而不是“类别”,但每当我发表帖子时,
genre\u id
显示为
NULL
,我得到一个
警告:不能批量分配属性genre\u id

我的post模型中只有
genre\u id
,因为这是属性的名称,但是当我将其更改为
genre\u id
时。我得到了错误
ActiveRecord::语句在PostsController中无效#create找不到表'genres\u posts'

邮政表格

后模型
class Post
我没有答案,但以下是您应该检查的内容:

  • 在代码中,
    行应包括
    类型,而不是
    类型

  • Ryan Bates(我喜欢他的网络广播)没有告诉你的是,你需要更改你的数据库,以便你的模型可以被存储。原因是,在关系数据库上,m:n关系通常由一个单独的表实现,该表只存储该关系。看一看这张照片
  • 因此,您必须生成一个独立的迁移(请参阅),该迁移创建一个表,该表将
    posts
    genres
    的ID保存在一个表中。因此,表格应命名为
    genres\u posts
    ,并包括
    genres\u id
    post\u id

因此,根据您之前所做的工作,您可以按照所有步骤来实现一个工作示例应用程序。祝你好运

好的,很有意思,谢谢。我明天会看看这是否能解决问题
<% for genre in Genre.find(:all) %>
<div>
  <%= check_box_tag "post[genre_ids][]", genre.id, @post.genre.include?(genre) %>
  <%= genre.name %>
</div>
<% end %>
class Post < ActiveRecord::Base

  has_and_belongs_to_many :genres

end