Ruby on rails 在类别中放置论坛(Rails 4)
我正在使用RubyonRails创建一个论坛(我在这方面是个新手),我已经完全陷入了困境 **RubyonRails 4.0版** 一个论坛软件可以有很多类别,在这些类别中你可以有多个论坛 主页的外观与此类似: 第一类Ruby on rails 在类别中放置论坛(Rails 4),ruby-on-rails,ruby,migration,ruby-on-rails-4,Ruby On Rails,Ruby,Migration,Ruby On Rails 4,我正在使用RubyonRails创建一个论坛(我在这方面是个新手),我已经完全陷入了困境 **RubyonRails 4.0版** 一个论坛软件可以有很多类别,在这些类别中你可以有多个论坛 主页的外观与此类似: 第一类 论坛1 论坛2 第2类 论坛3 论坛4 论坛5 当你创建一个论坛时,你应该有一个下拉菜单,允许你选择你想把它放在哪个类别 起初,我创建了两个不同的框架——一个用于分类,另一个用于论坛。我用外键将两者连接起来。我不知道这是否是最好的方法,但我根本无法让他们互动。最后我把代码
- 论坛1
- 论坛2
- 论坛3
- 论坛4
- 论坛5
class AddForeignToForums < ActiveRecord::Migration
def change
add_column :forums, :category_id, :integer
end
end
论坛模式
class Forum < ActiveRecord::Base
belongs_to :category
end
class Category < ActiveRecord::Base
has_many :forums, :dependent => :destroy,
end
class论坛
类别模型
class Forum < ActiveRecord::Base
belongs_to :category
end
class Category < ActiveRecord::Base
has_many :forums, :dependent => :destroy,
end
类别:销毁,
结束
Category Index.html.erb
<tbody>
<% @categories.each do |category| %>
<tr>
<td><%= link_to category.name, category %></td>
<td><%= link_to ' (Edit', edit_category_path(category) %></td>
<td><%= link_to '| Destroy)', category, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% category.forums.each do |forum| %>
<tr>
<td><li><%= link_to forum.name, forum %></li></td>
</tr>
<% end %>
<% end %>
</tbody>
<%= form_for(@forum) do |f| %>
<div class="field">
<%= f.label :name %><br>
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :description %><br>
<%= f.text_area :description %>
</div>
<%= f.label :category_id %><br />
<%= f.select :category_id, Category.all.map{|c| [c.name, c.id]} %>
<div class="actions">
<%= f.submit %>
</div>
Forum\u form.html.erb
<tbody>
<% @categories.each do |category| %>
<tr>
<td><%= link_to category.name, category %></td>
<td><%= link_to ' (Edit', edit_category_path(category) %></td>
<td><%= link_to '| Destroy)', category, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% category.forums.each do |forum| %>
<tr>
<td><li><%= link_to forum.name, forum %></li></td>
</tr>
<% end %>
<% end %>
</tbody>
<%= form_for(@forum) do |f| %>
<div class="field">
<%= f.label :name %><br>
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :description %><br>
<%= f.text_area :description %>
</div>
<%= f.label :category_id %><br />
<%= f.select :category_id, Category.all.map{|c| [c.name, c.id]} %>
<div class="actions">
<%= f.submit %>
</div>
您可能需要一个论坛表、一个类别表和一个包含论坛id和类别id的联接表-将此论坛命名为类别
class Forum < ActiveRecord::Base
has_many :forum_categories
has_many :categories, :through => :forum_categories
end
或
这将以数组格式提交一个参数,允许您使用简单的
forum.create(params[:forum])
在您的视图中,您将列出category.forums,而不是@forums
<% category.forums.each do |forum| %>
<%= forum.name %>
<% end %>
如果关系不是多对多,我还会想要一个联接表吗?我数据库的这部分是一对多的关系,因为论坛只能被分配到一个类别。对不起,我误解了。你对分类id没问题。我在答案上加了一点。
class Category < ActiveRecord::Base
# belongs_to :category - this can be removed
has_many :forums # Do you want to delete the forums if the category is removed? You don't need the classname option.
end
f.select :category_id, Category.all.map{|c| [c.name, c.id]}