ruby-on-rails - 设计:能够将参数传递给注册#sign_up 操作

标签 ruby-on-rails devise

我们偶尔会向潜在客户发送定制的注册链接。该链接包含可用于预填写注册表的参数。

http://www.example.com/users/sign_up?user[company_name]=Foo&user[region]=NA

我们的注册表包含接受公司名称和地区的字段。可以根据注册链接预先填写。

这应该在实践中起作用,但这不是因为 registrations#new行动得到落实。 new Action 调用build_resource带有空散列的方法。
def new
  resource = build_resource({})
  respond_with resource
end

build_resource方法忽略 resource_params当输入非零时。
def build_resource(hash=nil)
  hash ||= resource_params || {}
  self.resource = resource_class.new_with_session(hash, session)
end  

我不得不超越 new在我的注册 Controller 中采取行动来解决这个问题。我不喜欢我的解决方案,因为它很脆弱。
def new
  resource = build_resource
  respond_with resource
end
new有什么原因使用空哈希调用操作?可以在没有空哈希的情况下调用它吗(就像在 create 操作中一样)?

最佳答案

我最终覆盖了 build_resource并将更改范围限定为 new行动。

def build_resource(hash=nil)
  # scope the change to new actions 
  return super unless action_name == "new"
  super.tap do |user|
    user.company_name = params[:user][:company_name]
    user.reg‭ion = params[:user][:reg‭ion]      
  end
end

关于ruby-on-rails - 设计:能够将参数传递给注册#sign_up 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13143931/

相关文章:

ruby-on-rails - 如何指定设计 'from' 电子邮件

ruby-on-rails - 门卫密码授予 URI::InvalidURIError:查询与不透明的冲突

ruby-on-rails - accepts_nested_attributes_for : What am I doing wrong

ruby-on-rails - 从 rails 中的属性中删除所有 html 标签

ruby-on-rails - 从内部优雅地终止 Rails 应用程序

css - Rails 4,Bootstrap - 将内容显示在列中的 CSS

ruby-on-rails - 带有 tr 翻译的 SecureRandom 字符串显示大量下划线?

ruby-on-rails - 帖子中的真实性 token 无效

javascript - 在 Rails 中实现 Bootstrap 选项卡

ruby-on-rails - 第一代后修改设计模块