我正在尝试呈现这种形式:
<form class="form-inline">
<%= simple_form_for @prospect,
:url => url_for(:action => 'create', :controller => 'prospects'),
:method => 'post' do |f| %>
<%= f.error_notification %>
<%= f.input :name, placeholder: 'Name', label: false %>
<%= f.input :email, placeholder: 'Email', label: false %>
<%= f.input :interests, placeholder: 'Tell us what you were searching for', label: false, value: params[:search] %>
<%= f.error :base %>
<%= f.button :submit, "Submit", :class=> "btn" %>
<% end %>
使用这个部分:
<%= render partial: 'prospects/novideo_capture' %>
部分在由 Videos#index 控制器控制的视图中,我不断收到此错误:'undefined method `model_name' for NilClass:Class'
这是我的前景控制器:
class ProspectsController < ApplicationController
def index
@prospects = Prospect.all
end
def new
@prospect = Prospect.new
end
def create
@prospect = Prospect.new(params[:prospect])
if @prospect.save
render "thanks_for_interest"
else
render "novideo_capture"
end
end
我不确定我出了什么问题,尽管我很确定这是一个简单的解决方案。我已经看到了很多关于 SO 的类似问题,并尝试了他们所有的答案,但似乎没有一个适用于这种情况。
谢谢你的帮助...
编辑:添加
@prospect = Prospect.new
到视频索引控制器会阻止错误发生,但我认为这不是正确的方法。它实际上也没有使表单使用前景控制器。
EDIT2:我现在正确地进行了部分渲染(我认为),并且我的视频#index 像这样调用部分:
<%= render partial: 'prospects/novideo_capture', :prospect => @prospect %>
然后部分中的 simple_form 如下所示:
<form class="form-inline">
<%= simple_form_for :prospect,
:url => url_for(:action => 'create', :controller => 'prospects'),
:method => 'post' do |f| %>
...
<% end %>
然而,它实际上并没有使用前景控制器提交表单。任何想法为什么?