Ruby on rails rails、rest和渲染不同的动作

Ruby on rails rails、rest和渲染不同的动作,ruby-on-rails,rest,Ruby On Rails,Rest,也许我的逻辑不是restful,或者我不知道你是否会这样做,但这正是我试图做的 我在一个类别控制器中获得一个类别,一旦我获得该类别,我想返回到另一个控制器中的索引页,但保留@category和category.busineses 在休息之前,我会这样做: 呈现:控制器=>“业务” 它将在该控制器中呈现索引操作的视图 现在在我的回答中,我有这个 format.html {redirect_to(business_path)} # index.html.erb format.xml {

也许我的逻辑不是restful,或者我不知道你是否会这样做,但这正是我试图做的

我在一个类别控制器中获得一个类别,一旦我获得该类别,我想返回到另一个控制器中的索引页,但保留@category和category.busineses

在休息之前,我会这样做:

呈现:控制器=>“业务”

它将在该控制器中呈现索引操作的视图

现在在我的回答中,我有这个

   format.html {redirect_to(business_path)} # index.html.erb
   format.xml  { render :xml => @businesses }
当然,对于渲染,它会释放实例变量并开始一个新操作

所以我想做的是呈现动作,而不是重定向到那个动作。 这可能吗


我是否应该用render:controller=>替换respond\u to?

我不是100%清楚您想要做什么,但是您在RESTful应用程序中有几个演示选项

您可以在重定向中传递参数。在本例中,我们在HTTP GET中将类别id作为参数传递。重定向末尾的页面可以适当地处理此问题:

format.html {redirect_to( business_path(:category_id => @category.id) }
还可以渲染指定动作或模板的视图。在本例中,我们呈现在“{current_controller}/business.html.erb”中定义的视图:


我不是100%清楚你想做什么,但你有几个在RESTful应用程序中演示的选项

您可以在重定向中传递参数。在本例中,我们在HTTP GET中将类别id作为参数传递。重定向末尾的页面可以适当地处理此问题:

format.html {redirect_to( business_path(:category_id => @category.id) }
还可以渲染指定动作或模板的视图。在本例中,我们呈现在“{current_controller}/business.html.erb”中定义的视图:


如果需要实例变量,则不能使用redirect_to,因为它是按如下方式使用render的

format.html { render :controller=> 'buisness'  ,:action => "index" }
或者只是

format.html { render :controller=> 'buisness'}

如果需要实例变量,则不能使用redirect_to,因为它是按如下方式使用render的

format.html { render :controller=> 'buisness'  ,:action => "index" }
或者只是

format.html { render :controller=> 'buisness'}

我认为您正在尝试做的事情(如果我理解正确的话)最好使用嵌套资源来实现。如果有被划分为多个类别的业务,并且您希望显示特定类别中所有业务的列表,则可以按如下方式设置应用程序:

型号

class Category < ActiveRecord::Base
  has_many :businesses
end

class Business < ActiveRecord::Base
  belongs_to :category
end
map.resouces :businesses

map.resources :categories do |categories|
  categories.resources :businesses
end
控制器

class BusinessesController < ApplicationController
  def index
    @category = Category.find(params[:category_id]) if params[:category_id]
    conds = params[:category_id] ? { :category_id => params[:category_id] } : nil
    @businesses = Business.all(:conditions => conds)
  end
end
class BusinessesControllerparams[:category_id]}:nil
@业务=业务。所有(:条件=>条件)
结束
结束

然后简单地访问一个类别的业务列表,如下所示:
/category/1/businesss

我认为您正在尝试做的事情(如果我理解正确的话)最好使用嵌套资源来实现。如果有被划分为多个类别的业务,并且您希望显示特定类别中所有业务的列表,则可以按如下方式设置应用程序:

型号

class Category < ActiveRecord::Base
  has_many :businesses
end

class Business < ActiveRecord::Base
  belongs_to :category
end
map.resouces :businesses

map.resources :categories do |categories|
  categories.resources :businesses
end
控制器

class BusinessesController < ApplicationController
  def index
    @category = Category.find(params[:category_id]) if params[:category_id]
    conds = params[:category_id] ? { :category_id => params[:category_id] } : nil
    @businesses = Business.all(:conditions => conds)
  end
end
class BusinessesControllerparams[:category_id]}:nil
@业务=业务。所有(:条件=>条件)
结束
结束


然后简单地访问一个类别的业务列表,如下所示:
/category/1/businesss

Sam,您的意思是
render:action=>“foo”
?你的解释很让人困惑PI很抱歉让人困惑,但是rest对我来说是一个全新的范例,我不确定从哪里开始SAM,你是说
render:action=>“foo”
?你的解释很让人困惑PI很抱歉让人困惑,但是rest对我来说是一个全新的范例,我不确定从哪里开始format.html{render:action=>“index”}是我一直在寻找的format.html{render:action=>“index”}是我一直在寻找的Hanks,这就是我一直在寻找的。我想你是在Toby之后回答的,否则我会给你支票而不是voteit的ok Sam。但是记住format.html{render:action=>“business”},因为Toby的答案必须是format.html{render:controller=>“business”},否则它会在categories/business.html.erb中查找页面。我知道这只是打字错误或者可能很匆忙,但请看一看。其他的都好。谢谢,这就是我要找的。我想你是在Toby之后回答的,否则我会给你支票而不是voteit的ok Sam。但是记住format.html{render:action=>“business”},因为Toby的答案必须是format.html{render:controller=>“business”},否则它会在categories/business.html.erb中查找页面。我知道这只是打字错误或者可能很匆忙,但请看一看。如果我只想得到一个完整的业务列表,而不是按类别,那该怎么办呢。检查参数[:category_id]?@Sam-查看我的编辑,了解如何对
/business
/category/1/business
使用相同操作的示例。非常感谢。顺便说一句-你认为学习rails上的rest的最佳资源是什么?如果你还没有看过官方网站上的指南,那么它是相当不错的:在路由类别中也有一些很好的RailsCast,包括嵌套路由和自定义rest操作:def index在params[:category_id]上缺少一个右括号那么,如果我只是想得到一个完整的企业列表而不是按类别的索引操作,该怎么办呢。检查参数[:category_id]?@Sam-查看我的编辑,了解如何对
/business
/category/1/business
使用相同操作的示例。非常感谢。顺便问一下,您认为学习rest on rails的最佳资源是什么?gui