如何使用`respond_to`和`respond_with`进行多项操作?

时间:2011-02-22 18:07:54

标签: templates ruby-on-rails-3 controller

我有几个视图,控制器操作如下所示:

def active
  @posts = current_user.posts
  respond_to do |format|
    format.html{ render :template => "posts/list" }
    format.js  { render :template => "posts/list.js" }
  end
end

我总是希望在PostsController中为很多动作渲染这些模板。

我不知道如何继续。

我正在寻找类似的东西:

class PostsController

  respond_to :html, :js

  def active
      @posts = current_user.posts

      #respond with the appropriate template (posts/list.html.erb or (posts/list.js.erb):
      respond_with(....what goes here...??)
  end
end

1 个答案:

答案 0 :(得分:0)

我认为你这是错误的做法。你要做的第一件事就是坚持使用RESTful资源。因此,请在active控制器上删除Posts方法。相反,将Post资源嵌套在User下。所以在您的路线中这样做

resources :users do
    resources :posts
end

这将为您提供与此/users/:user_id/posts类似的路线,您可以使用user_posts

从您的观看中访问该路线

然后为html,js等创建适当的视图。您将找到所需的所有信息here

希望这能让你指出正确的方向。