subject_types
という名前のテーブルを作成し、英語、スペイン語、履歴などの異なるサブジェクトを作成したいとします。そして、それぞれuser
にsubjects
テーブルを割り当てます。私は、ユーザーが複数のsubjects
をチェックボックスで選択できるようにしたいと思って、それらの特定のものを保存し、チェックを続けます。各ユーザーは自分自身でpreferences/services
を保存できます。私はこのアプローチに最も適した方法を見つけようとしています。ここRAILS:チェックボックスとカテゴリテーブルを持つユーザーにカテゴリ/サブジェクトを保存する
- をどのように見えるかです。私はこの情報を受け取り、後で選択した対象の種類だけで結果を見つけることができるようにしたいと考えています。このチュートリアルやこれに類するリファレンスはありますか?
- subject_types
モデルを作成し、これらのサブジェクトを作成するか、より良い方法がありますか?
可能な解決策
- 私は私のユーザーテーブルの列の配列を持っているだろうか?配列は
subjects
テーブルのIDになります。どうやってやるの??用<%= form_for(@user) do |f| %> <%= f.collection_check_boxes(:writing_type_ids, WritingType.all, :id, :name) %> <%= f.submit 'submit' %> <% end %>
class WritingType < ActiveRecord::Base has_many :user_writing_types has_many :users, through: :user_writing_types end class UserWritingType < ApplicationRecord belongs_to :user belongs_to :writing_type end class User < ActiveRecord::Base has_many :user_writing_types has_many :writing_types, through: :user_writing_types end
私の移行が
への参加:
は
更新ありがとう
最新のアップデート
イムエラーの私の最後を取得!そのページでsubmitをクリックすると、No route matches [PATCH] "https://stackoverflow.com/users/51"
となります。
- 私は
devise
edit.html.erb
の私の編集フォームにこの<%= f.collection_check_boxes(:writing_type_ids, WritingType.all, :id, :name) %>
を追加しました。 writing_typeの名前はチェックボックスに入力されますが、user_writing_type
テーブルでは何もデータベースに送信されません。 has_many :through associationsを使用して参加したモデルで、多くの関係に多くを作成することによって
私の最後のエラーを取得しています!私は ''ルートは[PATCH] '/ users/51' 'とマッチします。私はroutes.rbでルーティングする方法を知っていますが、最良のアプローチが必要です。パス。 –
'resources:users'を' routes.rb'に追加します。あなたは完全に誤解しているようです - 親レコード(ユーザ)を更新して、WritingTypesControllerやその他のものにリクエストを送信することで、関連付けを作成します。 (あなたの命名はちょっと複雑すぎて奇妙です)。 – max
大丈夫なので、ユーザーレコードがデータを取得します。どこに格納されますか?私のユーザーにdeviseを使っているので、私はパス名でdevise_forを持っています。私の 'devise/registrations/edit'ページに' collection_check_boxes'を追加することを考えていました: '<%= form_for(resource、as:resource_name、url:registration_path(resource_name)、html:{method::put、multipart :true}、:validate => true)do | f | %> '更新すると、編集ページで保存されません。チェックボックスは元に戻ってもチェックされません。 –