Ruby on rails Rails:是否可以将';渲染';对于多种方法?
是否可以将渲染方法分组为多个方法 我的情况如下:我的控制器的许多方法共享相同的视图。仅数据更改(数据将用于选择select HTML字段的默认选项)。附言:我知道有更好的方法可以做到这一点(比如使用show方法),但目的是让URL更性感(见下文) 这是为了能够在routes.rb文件中使用匹配:Ruby on rails Rails:是否可以将';渲染';对于多种方法?,ruby-on-rails,routes,render,Ruby On Rails,Routes,Render,是否可以将渲染方法分组为多个方法 我的情况如下:我的控制器的许多方法共享相同的视图。仅数据更改(数据将用于选择select HTML字段的默认选项)。附言:我知道有更好的方法可以做到这一点(比如使用show方法),但目的是让URL更性感(见下文) 这是为了能够在routes.rb文件中使用匹配: match 'flower', :to => 'objects#flower' match 'car', :to => 'objects#car' ... 因此,为了不重复我自己,我可以为
match 'flower', :to => 'objects#flower'
match 'car', :to => 'objects#car'
...
因此,为了不重复我自己,我可以为许多方法分组相同的渲染吗
谢谢,您可以在过滤后使用
:
after_filter :render_index
def render_index
render 'index'
end
您可以尝试以下方法:
get ':source', :to => 'objects#index', constraints: {source: /\A(flower|car|etc)\z/}
def index
@object = send(params[:source]) if params[:source].present?
end
约束源列表非常重要,这样就不允许执行任意方法,但这样可以让您轻松地使用单个路由和单个操作。谢谢Talgat,但并非所有我的方法都使用相同的渲染文件。因此,当我在方法(例如创建)中指定渲染视图时,我得到了多个渲染错误。您可以使用:only属性,after\u filter:render\u index,:only=>[:create,:some\u action]
查看此处以了解更多详细信息。不幸的是,它以模板丢失错误结束:缺少模板对象/花,应用程序/花{:locale=>[:en],:formats=>[:html],:handlers=>[:erb,:builder,:coffee,:haml]}!谢谢Chris。我喜欢你建议的解决方案,但应用它会返回500个内部服务器错误:未定义#的方法'flower'。有什么想法吗?使用rake路由返回:GET/:object(:format)object#index{:object=>/(flower | car | cat)/}
get ':source', :to => 'objects#index', constraints: {source: /\A(flower|car|etc)\z/}
def index
@object = send(params[:source]) if params[:source].present?
end