选择嵌套记录以通过复选框选择与操作邮件中的选定用户共享显示页面

Selecting a nested record to share show page of with selected users in action mailer via checkbox selection

因此,使用我设置的 gem 装置,我的用户可以注册为买家帐户或卖家帐户。如果他们是买家,他们可以进行嵌套查询以获取从卖家处购买的信息。在卖家索引页面上,如果我是买家并以当前用户身份登录,我希望我所做的每个查询都显示在页面的一部分上,每个查询的标题显示在单选按钮旁边或作为买家从 select 下拉菜单中的一个选项,以及隐藏的查询 ID,因此我可以在 select 之后在操作邮件中使用它。我猜我需要一个带有 post 请求的表格,以 select 我为下一步所做的查询,所以这是我到目前为止一直在尝试的:

  <%= 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 的形式显示为选项的下拉菜单或单选按钮选项。

之后,在同一个卖家索引页面上,我在每个单独的卖家部分卡片上都有复选框。作为买家,我希望能够使用 action mailer 向我点击了其复选框的每个卖家发送一封电子邮件,邀请他们查看 link 到我选择的查询的显示页面,所有这些都带有单击一个按钮。我还没有接近让这个工作。到目前为止,我在每个卖家部分上的复选框是这样的,这样我就可以隐藏他们的 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

这是我的 invite.html.erb 文件:

<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>

但我不确定我目前所做的是否正确,以及从这里到哪里才能让我的下一步工作发挥作用。我不知道如何将查询 ID 传输到操作邮件程序,也不知道如何正确发送 selected 复选框。我将不胜感激任何关于我下一步应该采取什么步骤来让我的查询显示正确方式以及如何将我选择的查询发送给我选择的卖家的建议。谢谢!

这会给一些想法

路线

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 %>

这将为每个查询创建复选框(或者您可以将其更改为多个 select)

提交时,它将 inquiry[:ids] 提交到 SellersController

中的 notify 方法

您可以在那里访问 ID 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 %>
    ...

这将提交 selected id 作为 params[:seller][:ids]