我有一个 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
由于某种原因,它不会呈现“shows/new”模板。它在没有布局的情况下不断渲染当前控制器的new
模板。我在这里想念什么?
顺便说一句,我查看了 api.rubyonrails.org 并尝试查找该render
方法。我发现它列为render(context,options)
,但我一生都无法找出有效的选项是什么。这似乎是许多方法的常见模式。我怎么知道?它肯定会帮助我弄清楚我的选择是什么,也许可以尝试各种事情。
谢谢,丹妮。
补充:我现在已经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'
我不完全确定是什么原因造成的......