在我的应用程序中,我有一个/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
)之前,因为只有action
和controller
参数已经在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))