Выбор вложенной записи, чтобы поделиться страницей показа с выбранными пользователями в почтовой программе действий с помощью флажка - PullRequest
0 голосов
/ 14 марта 2020

Таким образом, с настройкой устройства, разработанной мной, мои пользователи могут зарегистрироваться либо как учетная запись покупателя, либо как учетная запись продавца. Если они покупатели, они могут делать вложенные запросы на информацию, чтобы покупать у продавцов. На странице индекса продавцов, если я покупатель и вошел в систему как текущий пользователь, я хочу, чтобы каждый мой запрос отображался на той части страницы, где заголовок каждого запроса отображался рядом с переключателем или в качестве опции в раскрывающемся меню, из которого покупатель может выбрать, наряду со скрытым идентификатором запроса, чтобы я мог использовать его в почтовой программе после выбора. Я предполагаю, что мне нужна форма с запросом на публикацию, чтобы выбрать запрос, который я сделал для следующего шага, так что это то, что я пробовал до сих пор:

  <%= simple_form_for [@buyer, @inquiries], method: :post  do |f| %>
  <%= f.input :inquiry.name, collection: @inquiries, as: :radio_buttons %>
  <%= f.text_field :inquiry_id, value: inquiry.id, type: "hidden"  %>
  <%= f.submit 'New user' %>

В контроллере индекса моих продавцов , для покупателя и запроса у меня есть

@buyer = current_user.buyer if current_user.buyer
@inquiries = @buyer.inquiries if current_user.buyer

Однако я не смог правильно отобразить список запросов для отображения со скрытым идентификатором в виде раскрывающегося меню параметров или переключателей .

Впоследствии, на той же странице индекса продавца, у меня есть флажки на каждой отдельной карточке продавца. Как покупатель, я хочу иметь возможность использовать экшн-рассылку для отправки каждому продавцу, чей флажок я щелкнул по электронной почте, и пригласить его посмотреть ссылку на страницу показа выбранного мной запроса, и все это одним нажатием кнопки. , Я не приблизился к тому, чтобы заставить это работать. До сих пор флажок у меня был у каждого продавца частичный, поэтому я могу скрыть его ID:

<%= check_box("seller", "id", {}, seller.id) %>

Это мой почтовый файл с запросом:

class InquiryMailer < ApplicationMailer

  # Subject can be set in your I18n file at config/locales/en.yml
  # with the following lookup:
  #
  #   en.inquiry_mailer.invite.subject
  #
  def invite(seller)
    # @greeting = "Hi"
    @buyer = current_user.buyer
    @inquiries = @buyer.inquiries
    @seller =  seller

    mail(to: @seller.email, subject: 'You have been invited to sell your!')

  end
end

И это мое приглашение . html .erb file:

<p>Hello, <%= @seller.email %>!</p>

<p>You have been invited to sell to <%=@buyer.name%>!</p>

<p>Their inquiry is titled <%= @inquiry.title %>, it can be found at<p>

<p><%= link_to 'See this inquiry!', buyer_inquiry_path(@buyer, @inquiry) %><p>

Но я не уверен, правильно ли то, что у меня есть, и куда go отсюда, чтобы мои дальнейшие шаги работали. Я не знаю, как передать идентификатор запроса в Action Mailer, и при этом я также не знаю, как правильно отправлять выбранные флажки. Я был бы благодарен за любые советы о том, какие шаги я должен предпринять, чтобы мои запросы показывали правильный путь и как отправить запрос, который я выбираю, продавцам, которых я выбираю. Спасибо!

1 Ответ

1 голос
/ 15 марта 2020

Это даст некоторую идею

маршруты

resources :sellers do
  collection { post :notify }
end

форма

<%= simple_form_for :inquiry, url: notify_sellers_path do |f| %>
  <%= f.input :ids, collection: @inquiries, as: :check_boxes, label: false%>
<%= f.submit %>

это создаст флажок для каждого запроса (в качестве альтернативы вы можете изменить его на несколько выберите)

при отправке он отправит inquiry[:ids] в notify метод в SellersController

Там вы можете получить доступ к идентификаторам params[:inquiry][:ids] и создавать уведомления

def notify
  inquiry_ids = params[:inquiry][:ids]
  do stuff
  InquiryMailer.notify_seller(params[:inquiry][:ids])
  ...
end

Для продавцов

вы можете использовать вышеуказанную форму и изменить collection на collection: @sellers или

<%= simple_form_for :seller, url: notify_sellers_path do |f| %>
  <% @sellers.each do |seller| %>
    <%= f.check_box :ids, { multiple: true }, seller.id, nil %>
    <%= seller.name %>
    ...

, при этом выбранные идентификаторы будут отправлены как params[:seller][:ids]

...