Я не могу понять это для жизни меня, но вот мои модели:Простой флажок Форма для присоединиться отношение таблицы
class User < ApplicationRecord
has_many :user_stores
has_many :stores, through: :user_stores
end
class UserStore < ApplicationRecord
belongs_to :user
belongs_to :store
end
class Store < ApplicationRecord
has_many :user_stores
has_many :users, through: :user_stores
end
Так что я присоединиться к таблице, я пытаюсь сделать форма, которая бы выбрала флажки рядом с именами магазинов, которые пользователь выбрал (эта информация будет поступать из отношения таблицы соединений) и открыть флажки для остальных магазинов (исходящих из модели Store). Как показать это в представлении/заставить его работать и в контроллере. Вместо этого я бы использовал сборники? (Я использую Завещание и простую форму драгоценный камень)
Это то, что я до сих пор:
<h1>Add Favorite Stores</h1>
<%= simple_form_for(@user, html: { class: 'form-horizontal' }) do |f| %>
<%= f.fields_for :stores, @user.stores do |s| %>
# not sure if this is the right way or not
<% end %>
<%= f.button :submit %>
<% end %>
магазин Контроллер:
class StoresController < ApplicationController
...
def new
@user = current_user
@stores = Store.all
# @user.stores => shows user's stores (from join table)
end
end
Большое вам спасибо! Ты спасатель! – ravip0711
У меня был следующий вопрос: как сделать маршруты спокойными? Прямо сейчас я использую программу для пользователей, ресурс root 'home # index': user do resources: магазины заканчиваются. Когда пользователь подписывается, они переходят к контроллеру Home. Затем, когда вы просматриваете избранные магазины, они идут к контроллеру магазинов, но теперь с формой выше, они идут в Контроллер Пользователей, потому что он обновляет пользователя. Это верно? Должен ли я меняться, когда пользователь переходит в любимые магазины, он должен фактически быть контроллером пользователя, а не контроллером магазинов? – ravip0711
Нет правильного ответа. Если его любимые магазины хранятся, то хорошим маршрутом может быть «GET | POST/users /: user_id/stores», и вам может понадобиться создать конкретный контроллер (UserStoresController или User :: StoresController) для его обработки. Но вы можете задать новый вопрос по этой теме. – max