Rails 3.2 - 如何在不显示URL中的所有内容的情况下合并参数



在我的应用程序中,我有一个/thanks页面,用户在完成某个操作时最初被重定向到该页面。现在,我想在发生多种事件后将它们重定向到此页面,并根据事件的内容呈现不同的部分。所以我把它添加到/thanks页面:

- case @event
  - when "reservation"
    = render 'thanks_job_created'
  - when "charge"
    = render 'thanks_job_charged'

然后,在JobsController#create操作中,我redirect_to thanks_jobs_path更改为:

redirect_to thanks_jobs_path(params.merge(event: "reservation"))

。并在JobsController#thanks中添加了@event = params[:event].

该行为按预期工作,但我发现以这种方式使用 params.merge 现在会显示 URL 中的每个参数,包括#create表单的真实性令牌、所有 Job 属性等。在URL看起来正确(/jobs/thanks)之前,因为只有actioncontroller参数已经在URL中指示。

有没有办法让我在不显示 URL 中的所有信息的情况下使用 params.merge

如果只想将事件作为参数传递,则根本不需要使用params.merge

redirect_to thanks_jobs_path(event: "reservation")

会给你路径/jobs/thanks?event=reservation.

你可以

简单地使用except

params.merge.except(:auth_token)

在您的情况下:

redirect_to thanks_jobs_path(params.merge(event: "reservation").except(:auth_token))

最新更新