Form_for方法到另一个控制器

时间:2014-10-04 08:49:20

标签: ruby-on-rails ruby-on-rails-4

我有两个控制器。 PagesTasks。在观看/页面中,我想为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控制器中查找这个变量呢?

1 个答案:

答案 0 :(得分:0)

你的@task是零。您应该在要渲染其视图的操作中初始化它,或者只使用form_for Task。它应该工作。希望它有所帮助