Rails:如何将params从一种形式传递到另一种形式

时间:2012-07-20 18:31:25

标签: ruby-on-rails devise

这是我的情况:我有表格,网站的任何访客都可以填写。当然,如果他/她想要提交,他们必须是用户。因此,当他们点击“提交”时,他们会被带到注册/页面中。那是因为我需要一个“user_id”才能保存原始表单中的数据。

我想做的是从原始格式(params [:site])中获取参数,而不是在创建操作中提交它们,我想等到用户创建了一个帐户。这样我就可以避免在没有用户ID的情况下将站点信息保存到数据库中。

我可以在我的网站/创建方法中添加一些代码,就像这样。

def create
  @site = Site.new(params[:site])   
  unless current_user?
    redirect_to new_user_session_path, sites_form_data: params[:site]
  end
  if @site.save
  # ...
end

但是一旦我让用户创建帐户,我不确定如何抓住params [:site]?

我正在为这个项目使用Devise,因此可能会对工作产生影响。我想知道我是否必须覆盖原来的设计控制器,就像这个家伙那样:http://rorguide.blogspot.com/2011/04/overwrite-devise-registrations.html

我想我也可以将数据存储在cookie中。但我不知道何时访问该cookie,提取数据并保存到数据库。用户创建后,绝对是。但它应该是用户模型的回调吗?它应该去哪里?

我很感激任何建议或建议。

1 个答案:

答案 0 :(得分:1)

如何在用户会话中存储:site?这将持续存在于请求中,并且意味着您不必对其进行此类手动跟踪。