格式相关的rails路由

时间:2013-03-16 16:33:34

标签: ruby-on-rails routing routes single-page-application singlepage

如何在rails中实现以下路由:

  • 如果请求需要html,而不是路由到特定操作,请说应用程序#index

  • 如果是json格式请求,则通常会将资源路由到产生请求的json

  • 的操作

显然,这是单页面应用程序的一个用例,其中rails主要用于服务json。大多数页面都是非常简单的布局,其中一些值是自举的。

感谢提示。

1 个答案:

答案 0 :(得分:1)

在Rails中解决此问题的方法可以在控制器中以单个操作进行处理。在routes文件中,您只需声明资源:

resources :posts

控制器看起来像这样:

def index
  @posts = Post.all

  respond_to do |format|
    format.html  # index.html.erb
    format.json  { render :json => @posts }
  end
end

如您所见,响应的类型取决于所请求的类型。

但是,如果你确实想根据类型进行路由,我猜你可以尝试这样的事情:

match 'posts/:id.:format' => 'posts#html_respond', :constraints => {:format => "html"}
match 'posts/:id.:format' => 'posts#json_respond', :constraints => {:format => "json"}