也许我的逻辑不是很安静,或者知道你是怎么做的,但这就是我想做的事。
我在类别控制器中获得一个类别,然后一旦我得到该类别,我想返回到不同控制器中的索引页面,但保留@category和Category.busineses。
休息之前我会这样做:
渲染:controller => “企业”
它会在该控制器中呈现索引操作的视图。
现在在我的respond_to块我有这个
format.html {redirect_to(business_path)} # index.html.erb
format.xml { render :xml => @businesses }
但当然使用渲染它会丢失实例变量并以新操作开始。
所以我想做的是渲染动作而不是重定向到该动作。 这有可能吗?
我应该用render替换respond_to:controller => ?
答案 0 :(得分:2)
我认为您尝试做的事情(如果我理解正确的话)最好使用嵌套资源来实现。如果将业务分为多个类别,并且您希望显示特定类别中所有业务的列表,则可以按以下方式设置应用程序:
<强>模型强>
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
然后只需访问类别的商家列表,如下所示:/category/1/businesses
答案 1 :(得分:1)
我不是100%清楚你想要做什么,但你有几个选项可以在RESTful应用程序中进行演示。
您可以在重定向中传递参数。在这种情况下,我们将类别ID作为HTTP GET中的参数传递。然后,重定向末尾的页面可以适当地处理:
format.html {redirect_to( business_path(:category_id => @category.id) }
您还可以呈现指定操作或模板的视图。在这种情况下,我们渲染“{current_controller} /business.html.erb”中定义的视图:
format.html { render :action => "business" }
答案 2 :(得分:1)
如果您想要实例变量,则不能使用redirect_to,因为它使用渲染,如下所示。
format.html { render :controller=> 'buisness' ,:action => "index" }
OR JUSt
format.html { render :controller=> 'buisness'}