У меня есть сообщение 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)
, но не могу понять, каковы действительные варианты. Похоже, это общая схема для многих методов. Как я узнаю? Это, безусловно, поможет мне понять, какие у меня есть варианты, и, возможно, попробовать разные вещи.
Спасибо,
Дэни.
ДОБАВЛЕНО: теперь я использовал 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'
Я не совсем уверен, что вызывает это ...