渲染Rails局部视图(读取Rails API时出现问题)

时间:2011-11-01 21:39:48

标签: ruby-on-rails ruby-on-rails-3.1 actioncontroller

我有一个jQuery帖子,将表单提交给控制器create操作,效果很好。如果save成功,我希望create操作返回不同的表单,以便success回调插入此表单。这可能吗?

这是我的代码:

def create
    @event = Event.new(params[:event])

      if @event.save
        # This is where I would like to render a different controller action's view.
        render :controller => "shows", :action => "new", :layout => false
      else
        render action: "new"
      end
  end

由于某种原因,它不会呈现“显示/新”模板。它会在没有布局的情况下继续渲染当前控制器的new模板。我在这里缺少什么?

顺便说一下,我看了一下api.rubyonrails.org并尝试查找render方法。我发现它列为render(context,options),但在我的生活中不能找出有效的选项。这似乎是许多方法的常见模式。我怎么知道的?它肯定会帮助我弄清楚我的选择是什么,也许可以尝试各种各样的东西。

谢谢, 达尼。

ADDED:我现在在我的控制器操作中使用render "shows/new", :layout => false,这是有效的。在我的new.html.erb for Shows中我声明了<%= render "/shows/form" %>。不幸的是,我现在得到500错误。我在development.log中找到了这个:

ActionView::Template::Error (undefined method `model_name' for NilClass:Class):
    1: <%= form_for(@show) do |f| %>
    2:   <% if @show.errors.any? %>
    3:     <div id="error_explanation">
    4:       <h2><%= pluralize(@show.errors.count, "error") %> prohibited this show from being saved:</h2>
  app/views/shows/_form.html.erb:1:in `_app_views_shows__form_html_erb___1397093944823648986_2158339140'
  app/views/shows/new.html.erb:3:in `_app_views_shows_new_html_erb__1152608637968596369_2158584080'
  app/controllers/events_controller.rb:61:in `create'

我不完全确定导致这种情况的原因......

1 个答案:

答案 0 :(得分:2)

似乎你错过了:2.2.3 Rendering an Action’s Template from Another Controller

尝试:

 render "shows/new", :layout => false