我有一个索引页面,希望显示我在索引页面上创建的不同控制器的表单。我的视图中有3个文件夹。在名为index的文件夹中,我有一个名为index的html文件,在名为job的文件夹中我有form.html和show.html。
所以在我的index.html中我有
<h1>Complete Job Applications</h1>
<%= render 'job/form'%>
当我运行代码时,我收到此错误First argument in form cannot contain nil or be empty
。我想我知道为什么但不太确定。而不是显示表单,以便用户可以填写所有需要的文本字段,以便可以提交它立即提交它(只是猜测)。有没有人对如何在我的索引页面上显示来自另一个控制器的表单有任何想法
答案 0 :(得分:2)
您需要初始化传递给表单的对象,例如,假设您的视图如下所示:
# job/form
<%= form_for(some_model_instance, method: :get) do |form|
...
<% end %>
要从另一个控制器的操作渲染该表单,请确保在渲染部分之前初始化some_model_instance
,所以:
# controller which has the index action
def index
@some_model_instance = SomeModel.where(id: 1).first
end
# index.html.erb
<h1>Complete Job Applications</h1>
<%= render partial: 'job/form', locals: { some_model_instance: @some_model_instance } %>