我有一个用于创建任务的表单,它显示在项目/节目和任务/节目中。
projects / show上的表单可以很好地创建新任务,但是在tasks / 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 %>
有没有办法强制rails始终从这个表单创建新任务?
答案 0 :(得分:1)
尝试使用现有任务的属性分配新的任务对象。这样表单将POST而不是PATCH:
# 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 %>