如何在索引视图中将一种模型的对象传递给另一种?

时间:2019-03-02 19:30:31

标签: ruby-on-rails model-view-controller ruby-on-rails-5

我正在使用Hartl Rails教程,对其进行修改以构建一个简单的论坛。多亏了本教程,我可以使用用户模型/控制器/视图来登录和注销并跟踪当前用户。 我也有一个“主题”模型,它表示感兴趣的不同主题。 设置了用户模型,使每个用户都有多个主题。

我目前在主题索引视图中列出50个主题,并希望在每个主题旁边显示一个复选框或按钮,以便用户可以单击并订阅该主题。

我已经寻找了几个小时,无法弄清楚如何使用复选框将选中的主题添加到用户的主题列表中。对于这个广泛的问题,我表示歉意,这是我的不得已。

这是主题和用户架构的样子:

create_table "topics", force: :cascade do |t|
    t.string   "topic_name"
    t.integer  "user_id"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.index ["user_id"], name: "index_topics_on_user_id"
end



create_table "users", force: :cascade do |t|
    t.string   "name"
    t.string   "email"
    t.datetime "created_at",      null: false
    t.datetime "updated_at",      null: false
    t.string   "password_digest"
    t.index ["email"], name: "index_users_on_email", unique: true
  end

我不确定该问题还包括什么。我将全神贯注地提供更多必要的信息。

1 个答案:

答案 0 :(得分:1)

我认为您要寻找的是has_many_through关联。基本上,您希望创建第三个模型UserTopics,并且在提交表单时,将为每个选中的复选框创建一个UserTopic的新实例。这里有更多有关此的信息:

https://guides.rubyonrails.org/association_basics.html