我正在尝试在我的application.html.erb
布局文件中渲染一个动作,以使用一些jquery脚本将其显示为模式框。我听说我可以使用render :template => 'spots/new'
,但看起来这个方法不是渲染动作而只是视图文件。
点#新
def new
@spot = Spot.new
end
new.html.erb
<%= form_for(@spot) do |f| %>
...
<% end %>
问题在于,当我尝试使用spots#new
呈现render :template => 'spots/new'
时,我收到undefined method 'model_name' for NilClass:Class
错误。你知道我做错了什么吗?提前致谢
答案 0 :(得分:1)
您是对的,render :template => 'spots/new'
只是呈现您的视图模板,它不会调用spots#new
。您应该在渲染模板之前创建@spot实例变量。
在您的情况下,可能以下代码将起作用:
<% @spot ||= Spot.new %>
<%= form_for(@spot) do |f| %>
...
<% end %>