0

是否可以将多个方法的渲染方法分组?

这是我的情况:我的控制器的许多方法共享相同的视图。仅数据更改(数据将用于选择选择HTML 字段的默认选项)。PS:我知道有更好的方法(比如使用show方法),但目的是拥有更性感的 URL(见下文)。

def index
end

def flower
    @object = flower
    render 'index'
end

def car
    @object = car
    render 'index'
end

... (other objects)

这是为了能够在routes.rb文件中使用match :

match 'flower', :to => 'objects#flower'
match 'car', :to => 'objects#car'
...

那么,为了不重复自己,我可以为许多方法分组相同的渲染吗?

谢谢,

4

2 回答 2

0

您可以尝试以下方法:

get ':source', :to => 'objects#index', constraints: {source: /\A(flower|car|etc)\z/}

def index
  @object = send(params[:source]) if params[:source].present?
end

限制源列表以不允许执行任意方法非常重要,但这将使您可以轻松地使用单个路由和单个操作。

于 2013-07-08T07:54:39.367 回答
0

您可以使用after_filter

after_filter :render_index

def render_index
   render 'index'
end
于 2013-07-08T07:36:29.067 回答