首页 > 解决方案 > 除了可提交的参数之外,我如何将选择选项存储在变量中以存储/使用在rails的辅助方法中

问题描述

试图弄清楚如何从加入组表单中提取 group_id 并将其存储到类似于 current_user 方法的辅助方法中的逻辑。我必须坚持严格的has_many,并且对于如何获得正确的group_id以匹配每个帖子以使用每种方法显示,甚至目前按group_id对帖子进行排序,我感到很困惑。一些方向将不胜感激......

加入群组表格

<div class="container">
  <div class="row">
    <div class="col-sm-5 col-sm-offset-4">
      <h2 class="text-center">Join a Group</h2>
        <%= bootstrap_form_for @membership do |f| %>

            <%= f.hidden_field :user_id, value: current_user.id %>

            <%= f.hidden_field :permission, value: 'student' %>

            <% options = options_from_collection_for_select(Group.all, 'id', 'name')%>
            <%= f.select  :group_id, options %>

           <%= f.submit "Join", class: 'form-control' %>
        <% end %>
    </div>

  </div>

我的数据库架构

  enable_extension "plpgsql"

  create_table "groups", force: :cascade do |t|
    t.string "name", default: "", null: false
    t.datetime "created_at", precision: 6, null: false
    t.datetime "updated_at", precision: 6, null: false
  end

  create_table "memberships", force: :cascade do |t|
    t.string "permission", default: "student", null: false
    t.datetime "created_at", precision: 6, null: false
    t.datetime "updated_at", precision: 6, null: false
    t.integer "user_id"
    t.integer "group_id"
  end

  create_table "posts", force: :cascade do |t|
    t.string "title"
    t.text "content"
    t.datetime "created_at", precision: 6, null: false
    t.datetime "updated_at", precision: 6, null: false
    t.integer "membership_id"
    t.integer "group_id"
  end

  create_table "users", force: :cascade do |t|
    t.string "email", default: "", null: false
    t.string "encrypted_password", default: "", null: false
    t.string "username", default: "", null: false
    t.string "first_name", default: "", null: false
    t.string "last_name", default: "", null: false
    t.string "reset_password_token"
    t.datetime "reset_password_sent_at"
    t.datetime "remember_created_at"
    t.datetime "created_at", precision: 6, null: false
    t.datetime "updated_at", precision: 6, null: false
    t.index ["email"], name: "index_users_on_email", unique: true
    t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
  end

end

邮寄表格

<div class="new_post">
  <div class="col-sm-8 col-sm-offset-2">
  <%= bootstrap_form_for @post do |f| %>
    <%= f.text_field :membership_id, value: 4 %>
    <%= f.text_field :title %><br/>
    <%= f.text_area :content %><br/>
    <%= f.submit %>
  <% end %>
  </div>
</div>

标签: htmlruby-on-railsrubyactiverecord

解决方案


推荐阅读