1

createコントローラーアクションにフォームを送信するjQueryの投稿があります。これはうまく機能します。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

何らかの理由で、「shows/new」テンプレートはレンダリングされません。レイアウトなしで現在のコントローラーのnewテンプレートをレンダリングし続けます。ここで何が欠けていますか?

余談ですが、私はapi.rubyonrails.orgを見て、renderメソッドを調べようとしました。私はそれがとしてリストされているのを見つけましrender(context,options)たが、私の人生の間、有効なオプションが何であるかを知ることができません。これは、多くのメソッドに共通のパターンのようです。どうすればわかりますか?それは確かに私の選択肢が何であるかを理解するのに役立ち、おそらくさまざまなことを試してみることができます。

ありがとう、ダニー。

追加:render "shows/new", :layout => false動作しているコントローラーアクションで使用しました。ショーのnew.html.erbで、宣言し<%= 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'

何が原因なのか完全にはわかりません...

4

1 に答える 1

2

あなたが逃したようです:2.2.3 Rendering an Action’s Template from Another Controller

試す:

 render "shows/new", :layout => false
于 2011-11-01T21:46:16.510 に答える