【问题标题】:Rails - changing default param_key for a modelRails - 更改模型的默认 param_key
【发布时间】:2013-10-31 01:22:06
【问题描述】:

我一直在 Rails 中使用普通的 Ruby 表单对象,但为了让我的代码井井有条,我最终不得不向它们添加大量的命名空间。所以我会有一个像这样的表格:

class User::Registration::NewForm
  extend Forwardable
  extend ActiveModel::Naming
  extend ActiveModel::Callbacks
  include ActiveModel::Conversion
  include ActiveModel::Validations

  ...
end

对此的烦恼是我的表单的 param_key 变得有点令人生畏,例如user_registration_new_form

我想以某种方式覆盖它,我想我需要弄乱ActiveModel::Naming (http://apidock.com/rails/ActiveModel/Naming/param_key/class) 中的model_name 和/或param_key 方法。但我无法让它工作。

是否有人能够成功覆盖模型的默认 param_key?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 forms activemodel


    【解决方案1】:

    啊,我终于明白了!你只需要定义一个类model_name方法,并返回一个ActiveModel::Name对象。

    比如:

    self.model_name
      ActiveModel::Name.new(User)
    end
    

    【讨论】:

    • 我必须这样做 ::ActiveModel::Name.new(User) 否则 uninitialized constant Reform::Form::ActiveModel::Name
    • 你也可以这样做:def model_name; Struct.new(:param_key, :name).new('form', 'form'); end.
    猜你喜欢
    • 2013-11-04
    • 2012-03-27
    • 1970-01-01
    • 1970-01-01
    • 2012-11-25
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    相关资源
    最近更新 更多