我有两个控制器。 Pages
和Tasks
。在观看/页面中,我想为Tasks
控制器和new
操作制作表单。
我试过了:
<%= form_for @task, url: url_for(controller: 'tasks', action: 'new') do |f| %>
<%= f.text_field :content %>
<%= f.submit "Add" %>
<% end %>
但我的浏览器出错:
表单中的第一个参数不能包含nil或为空:
这就像我的Tasks
控制器的new
方法一样:
def new
@task = Task.new
@task.done = false
if @task.update_attributes(task_params)
redirect_to root_path, notice: "Success"
else
redirect_to root_path, notice: "Error"
end
end
当然,在Pages / new中没有@task
变量。
那么如何告诉Rails在Tasks控制器中查找这个变量呢?
答案 0 :(得分:0)
你的@task是零。您应该在要渲染其视图的操作中初始化它,或者只使用form_for Task
。它应该工作。希望它有所帮助