所以我有一个同时支持博客和post_category的支架。
我与他们两个建立了联系。这是我的架构:
create_table "blogs", force: :cascade do |t|
t.string "title"
t.text "body"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "slug"
t.integer "status", default: 0
t.bigint "post_category_id"
t.index ["post_category_id"], name: "index_blogs_on_post_category_id"
t.index ["slug"], name: "index_blogs_on_slug", unique: true
end
create_table "post_categories", force: :cascade do |t|
t.string "name"
t.text "description"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
因此,我简单地创建了几个帖子类别,并且当我尝试与博客项目建立关联时,每当创建新博客时,我都可以显示一条选择语句,并为我要创建的博客项目选择首选类别。但我不知道如何在所有表单和index.html.erb文件上显示所有类别:
<div class="field">
<%= form.label :category %>
<%= form.collection_select :post_category, PostCategory.all %>
</div>
我该如何实现?并确保它也保存数据?
答案 0 :(得分:1)
根据this reference,格式为
collection_select(object, method, collection, value_method, text_method, options = {}, html_options = {})
对于您的代码,可以像这样
<%= form.collection_select(:post_category, :post_category_id, PostCategory.all, :id, :name, prompt: true) %>
更新2:
在blog_controllers内部
# white list parameter
def blog_params
params.require(:blog).permit(
:post_category_id,
... others fields
)
end