【问题标题】:Pass value from a controller to another one in post route将值从控制器传递到后路由中的另一个控制器
【发布时间】:2020-05-02 01:06:24
【问题描述】:

我有一个用户必须填写一个字段而不登录。该字段是一个 email_field。 我需要在我的控制器中获取 email_field 的值才能发送一些文档,为此我尝试将 email 字段的值存储在会话中但是当我检查会话值时它等于 nil 并且我没有知道为什么。

这是带有表单的视图:

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

所以我的问题是,如何从这个控制器(webhooks 之一)中的会话中获取值? 当我尝试这样做时,我是否走在正确的道路上,还是应该寻找另一种解决方案?

【问题讨论】:

  • 在你的 index-method 中,如果 session 不为零,则在设置后检查它的值。 >session[:email] = Email.last.email >puts session[:email].inspect
  • 我试过了,结果不是零,当我检查时我收到了正确的电子邮件
  • 几件事:如果您的用户在未登录的情况下提交电子邮件,则没有会话。为什么不将此电子邮件存储在一个简单的 cookie 中?另外我不明白session[:email] = Email.last.email您正在选择电子邮件模型中的最后一封电子邮件,但这与提交的电子邮件无关??
  • 也尝试使用 cookie,结果相同。据我了解,当用户在应用程序上时,Rails 会自动生成一个会话,这就是我尝试使用会话的原因。当您遵循漏斗时,提交的电子邮件是电子邮件模型中的最后一封电子邮件,该电子邮件在填写该字段后被选中。但我可能走错了方向,这就是我寻求帮助的原因

标签: ruby-on-rails ruby controller session-cookies session-variables


【解决方案1】:

为什么不在创建电子邮件后立即发送文件

emails_controller.rb

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

  if @email.valid?
    @email.save

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

其中send_documents 是一种触发邮件程序将文档发送到刚刚创建的电子邮件的方法。

【讨论】:

  • 因为我是从 webhook 中获取文档的,所以我在POST 中有路由,从 webhook 中获取信息
猜你喜欢
  • 1970-01-01
  • 2016-04-16
  • 1970-01-01
  • 1970-01-01
  • 2021-06-11
  • 1970-01-01
  • 1970-01-01
  • 2014-02-04
  • 1970-01-01
相关资源
最近更新 更多