如何在自定义脚手架生成器

时间:2015-08-04 18:49:48

标签: ruby-on-rails

我正在制作自定义模板以帮助开发我们的应用程序,而我陷入了一个愚蠢的问题。

我试图将ransack参数放在索引操作控制器中,但我不能让生成器拼写只有类名。

默认控制器是

  def index
    @<%= plural_table_name %> = <%= orm_class.all(class_name) %>
  end

这将产生类似的东西:

  def index
    @stuffs = Stuff.all
  end

我想要的是:

  def index
    @search = <%= orm_class.search(class_name, params[:q]) %>
    @<%= plural_table_name %> = @search.result.order('id')
      .paginate(page: params[:page], per_page: 50)
  end

会产生:

def index
    @search = Stuff.search(params[:q])
    @stuffs = @search.result.order('id')
      .paginate(page: params[:page], per_page: 50)
end

问题是,orm_class没有搜索方法。 如果函数只给我&#34; Classname&#34;我可以解决这个问题。但如果我试试 单独使用orm_class,它返回代码&#34; Rails :: Generators :: ActiveModel&#34;。

如何让orm_class只给我&#34; Classname&#34;?

&#34; best&#34;我到目前为止是

@search = <%= orm_class.all(class_name) %>.search(params[:q])

但后来我手动删除了所有&#34;在我生成脚手架后。

1 个答案:

答案 0 :(得分:4)

ActiveSupport::Inflector添加了各种转换字符串的方法。你想要classify

plural_table_name.classify

例如:

> "my_stuffs".classify
=> "MyStuff"

在你的情况下:

@<%= plural_table_name %> = <%= plural_table_name.classify %>.search(params[:q])