Передать значение от контроллера другому в пост-маршруте - PullRequest
0 голосов
/ 15 января 2020

У меня есть пользователь, который должен заполнить поле, не входя в систему. Это поле email_field. Мне нужно получить значение поля email_ в моем контроллере, чтобы отправить некоторые документы, для этого я попытался сохранить значение поля электронной почты в сеансе, но когда я проверяю значение сеанса, оно равно нулю, и я не знаю, почему.

Вот вид с формой:

<%= form_with model: @email, local: true do |form|%>
    <% if @email.errors.any? %>
    <div id="error explanation">
        <h2>Erreur : </h2>
            <ul>
                <% @email.errors.full_messages.each do |message|%>
                    <li><%=message%></li>
                <% end %>
            </ul>
    </div>
    <% end %>
    <div class="form-group">
        <%= label_tag :email %> :
        <%= form.email_field :email, placeholder: "Insert your email" %>
    </div>
    <div class="form-group">
      <%= form.submit class: "btn btn-primary", value: "Go" %>
    </div>
<%end%>

Мой первый шаг в моем контроллере, где я установил значение сеанса:

def index
  session[:email] = Email.last.email
end 

Мой контроллер, где я есть почтовый маршрут:

def webhooks
    render status: 200
    session[:email].inspect -> nil
end

И мой файл маршрута:

resources :emails

 get 'invoice/index' =>'invoice#index'
 post 'invoice/webhooks' =>'invoice#webhooks'

Итак, мой вопрос, как я могу получить значение из сеанса в этом контроллере (один из веб-хуков) ? И я на правильном пути, когда я пытаюсь сделать это, или я должен искать другое решение?

1 Ответ

0 голосов
/ 15 января 2020

Почему бы вам не отправить документы сразу после создания электронного письма

ie emails_controller.rb

...
  def create
  @email = Email.new(create_params)

  if @email.valid?
    @email.save

    send_documents(@email)
    ...
  else
    ...
  end
...

Где send_documents - это метод, который активирует отправку документов на только что созданную электронную почту.

...