我正在制作自定义模板以帮助开发我们的应用程序,而我陷入了一个愚蠢的问题。
我试图将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;在我生成脚手架后。
答案 0 :(得分:4)
ActiveSupport::Inflector添加了各种转换字符串的方法。你想要classify
:
plural_table_name.classify
例如:
> "my_stuffs".classify
=> "MyStuff"
在你的情况下:
@<%= plural_table_name %> = <%= plural_table_name.classify %>.search(params[:q])