2016-11-04 18 views
0

我有一個用於創建顯示在項目/ show和tasks/show上的任務的窗體。Rails:如何強制表單發佈而不是修補?

在projects/show上的表單創建新任務很好,但是在任務/表明它想要編輯任務,因爲我需要從我的任務控制器的show動作中調用任務ID。

我需要修改此表單以始終創建新任務。

我試過method: post但是rails仍然會將<input type="hidden" name="_method" value="patch" />插入到HTML中。

這裏是我的控制器和形式:

# Tasks Controller 
def show 
    @projects = Project.all 
    @project = Project.find(params[:project_id]) 
    @task = Task.find(params[:id]) 
    @tasks = @project.tasks.all 
end 

def create 
    @project = Project.find(params[:project_id]) 
    @task = @project.tasks.new(task_params) 
    @task.save 
    redirect_to @project 
end 

#Form 
    <%= form_for([@project, @task]) do |f| %> 
     <%= f.text_field :title %> 
     <%= f.submit %> 
    <% end %> 

有沒有辦法迫使軌道總是從這種形式創造新的任務?

+0

你試過'方法:: post'嗎?你在問題的'post'之前錯過了冒號。 –

+0

嗨,當我意識到我跳過結腸時,我很興奮,但它仍然不起作用。當我使用'<%= form_for([@ project,@task],method :: post)do | f | %>'我仍然在HTML中獲得'。 – interfab

+0

你有沒有把你的項目託管在heroku或任何地方?這個問題可能與jQuery UJs有關。檢查瀏覽器的控制檯是否有任何錯誤或警告。 –

回答

1

嘗試使用現有任務的屬性分配新任務對象。這樣的形式將發佈而不是修補程序:

# Tasks Controller 
def show 
    @projects = Project.all 
    @project = Project.find(params[:project_id]) 
    @task = Task.find(params[:id]) 
    @new_task = Task.new(title: @task.title) 
    @tasks = @project.tasks.all 
end 

# ... 

#Form 
<%= form_for([@project, @new_task]) do |f| %> 
    <%= f.text_field :title %> 
    <%= f.submit %> 
<% end %> 
相關問題