2014-10-04 115 views
1

我有兩個控制器。 PagesTasks。並在視圖/頁面中我想爲Tasks控制器和new操作形式。Form_for方法到另一個控制器

我嘗試這樣做:

<%= form_for @task, url: url_for(controller: 'tasks', action: 'new') do |f| %> 
    <%= f.text_field :content %> 
    <%= f.submit "Add" %> 
<% end %> 

但我在瀏覽器中得到一個錯誤:

形式

第一個參數不能包含零或爲空時:

這是如何看起來像我的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

解決。我將'new'動作改爲'create'動作並且正常工作。有點有線。 – Jensky 2014-10-04 09:46:23

回答

0

您的@任務爲零。您應該將其初始化爲您正在呈現視圖的操作,否則僅使用form_for Task。它應該工作。希望它有幫助

+0

@Jensky:你的問題解決了嗎? – Saurabh 2014-10-04 09:28:53

+0

不會。當我在我的'Pages'控制器和'home'動作中添加@task = Task.new'時,它是可以的(表單位於'views/pages/home.erb.html')。所以Rails在頁面不在任務控制器中尋找'@ task'變量。我不知道如何改變它。 – Jensky 2014-10-04 09:32:07

+0

使用form_for任務。它應該工作。 – Saurabh 2014-10-04 09:58:48

相關問題