Ruby on rails 将方法的表单_发送给另一个控制器

Ruby on rails 将方法的表单_发送给另一个控制器,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我有两个控制器页面和任务。在视图/页面中,我想为任务控制器和新建操作制作表单 我试过这个: <%= form_for @task, url: url_for(controller: 'tasks', action: 'new') do |f| %> <%= f.text_field :content %> <%= f.submit "Add" %> <% end %> 当然,Pages/new中没有@task变量。 那么,如何告诉Rail

我有两个控制器<代码>页面和任务。在视图/页面中,我想为
任务
控制器和
新建
操作制作表单

我试过这个:

<%= form_for @task, url: url_for(controller: 'tasks', action: 'new') do |f| %>
  <%= f.text_field :content %>
  <%= f.submit "Add" %>
<% end %>
当然,Pages/new中没有
@task
变量。
那么,如何告诉Rails在Tasks controller中查找此变量呢?

您的@task为nil。您应该在要呈现其视图的操作中初始化它,或者只使用任务的
表单(u
)。它应该会起作用。希望它有帮助

否。当我将
@task=task.new
添加到我的
页面
控制器和
主页
操作时,它是正常的(表单位于
视图/Pages/home.erb.html
)。所以Rails在页面中寻找
@task
变量,而不是在Tasks控制器中。我不知道如何改变它,解决了。我将
new
操作更改为
create
操作,效果良好。有点紧张。
  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