2016-11-04 7 views
0

私はprojects/showとtasks/showの両方に表示されるタスクを作成するためのフォームを持っています。Rails:フォームではなくパッチを適用する方法

私のタスクコントローラのshowアクション内からタスクIDを呼び出す必要があるため、projects/showのフォームは新しいタスクをうまく作成します。

常に新しいタスクを作成するには、このフォームを変更する必要があります。

method: postを試しましたが、レールには依然として<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

'method :: post'を試しましたか?あなたはあなたの質問で 'post'の前にコロンを忘れました。 –

+0

こんにちは、私はコロンをスキップして気づいたときに興奮しましたが、それでも動作しません。 '<%= form_for([@ project、@task]、method::post)を使うと、do | f | %> 'まだHTMLで'を取得します。 – interfab

+0

あなたのプロジェクトは英雄や他の場所でホストされていますか?この問題は、jQuery UJで発生する可能性があります。ブラウザのコンソールでエラーや警告を確認してください。 –

答えて

1

既存のタスクの属性を使用して新しいタスクオブジェクトを割り当ててみてください。そうすれば、フォームはPATCHではなくPOSTになります。

# 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 %> 
関連する問題