我有一个页面,其中显示有关相应汽车的信息(它是控制器cars
,操作show
)。在此页面上,我从名为_form
的控制器中呈现reviews
。
当我发送表单(通过AJAX)时,审核已成功创建,但我无法从reviews
控制器呈现来自cars
控制器的任何操作 - 更具体,这是代码:
# reviews_controller
def create
@review = Review.new(review_params)
@review.save
#respond_with(@review)
respond_to do |format|
format.js { render :action => "/cars/car_profile" }
end
end
我得到的错误:
ActionView::MissingTemplate (Missing template reviews/cars/car_profile, application/cars/car_profile with {:locale=>[:en], :formats=>[:js, :html], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :haml, :jbuilder]}. Searched in:
* "/Users/adam/rubydev/claisy/app/views"
* "/Users/adam/.rvm/gems/ruby-2.0.0-p481/gems/devise-3.4.1/app/views"
):
app/controllers/reviews_controller.rb:28:in `block (2 levels) in create'
app/controllers/reviews_controller.rb:27:in `create'
如何在控制器中呈现位于不同控制器中的操作?
提前谢谢。
答案 0 :(得分:0)
:action
强制rails在当前控制器视图文件夹中搜索模板。
缺少模板评论/ cars / car_profile
你应该写这个
render "cars/car_profile"
请参阅point 2.2.3
如果要从完全不同的模板渲染模板,该怎么办? 控制器来自包含动作代码的控制器?你也可以 使用render,它接受完整路径(相对于app / views) 要渲染的模板。