練習用に簡単な todo アプリを作成しています。has_many のタスクとタスクが属しているプロジェクトがあります。
url/projects/1/tasks を表示できるように、ルートをネストしています。
ルート.rb
resources :projects do
resources :tasks
end
私のプロジェクトのショービューには、次のフォームがあります。
Add a task:
<%= form_for [@project, @task] do |f| %>
<%= f.label :Task_name %>
<%= f.text_field :name, :placeholder => "Task Name" %>
<%= f.submit 'Create Task' %>
<% end %>
私のタスクコントローラーでは、次のことを行っています。
def create
@project = Project.find(params[:project_id])
@task = @project.tasks.new(params[:task])
if @task.save
redirect_to projects_path(@project)
else
redirect_to projects_path(@project)
end
end
リダイレクトしてプロジェクト インスタンス変数を渡すと、task.save のように見えます。http://todoapp.dev/ではなく、 http: //todoapp.dev/projects.5 (5 はプロジェクトの ID) にリダイレクトされます。プロジェクト/5 .
問題は、redirect_to メソッドまたはネストされたルートを使用するコントローラーにある可能性がありますか?
私は Rails ルーティングの基本的な理解を持っていますが、いくつかのアドバイスを使用できます。