【发布时间】:2018-02-12 03:45:49
【问题描述】:
我一直在寻找解决这个问题的方法已经有一段时间了,但我无法解决如何解决这个问题。我是 Rails/Ruby 编程的新手,希望能在这个问题上提供任何指导。
我有一个表单,它接受值并创建一个 Task 对象。每个任务 belongs_to 一个 Lead 和一个 Lead has_many 任务。
新任务的路径将lead_id 作为参数之一。
/accounts/:account_id/reps/:rep_id/leads/:lead_id/tasks/new
但我的目标是还允许用户使用表单为任何潜在客户创建任务。因此,理想情况下,应该允许他从下拉列表中选择一个潜在客户,并且该lead_id 需要传递到 CREATE 方法。
这是我的表格:
<%= simple_form_for(@task, url: account_rep_lead_tasks_path) do |f| %>
<%= f.error_notification %>
<div class="field">
<div class="control">
<div class="select">
<%= f.collection_select :lead_id, @leads, :id, :name %>
</div>
</div>
</div>
<div class="field">
<div class="control">
<%= f.input :task_type, required:true, autofocus:true, input_html: {class: "input"}, wrapper: false, label_html: {class: "label"} %>
</div>
</div>
<div class="field">
<div class="control">
<%= f.input :description, required:true, autofocus:true, input_html: {class: "textarea"}, wrapper: false, label_html: {class: "label"} %>
</div>
</div>
<div class="field">
<div class="control">
<%= f.button :submit, class: "button is-primary" %>
</div>
</div>
默认情况下,我会为最新的潜在客户呈现新的任务表单。假设最新创建的潜在客户 ID 为 21,以下是 URL 中显示的内容:
http://localhost:3000/accounts/1/reps/2/leads/21/tasks/new
但是,当我提交表单时,即使我通过用于lead_id 的表单中的collection_select 输入选择了不同的潜在客户,任务也不是为选定的潜在客户创建的,而是为id = 21 的潜在客户创建的。
服务器日志显示发送到 CREATE 方法的参数是:
Parameters: {"utf8"=>"✓", "authenticity_token"=>"sKwctK492JH01yXilEI7jSSmv53ggiJuRBH/9Ate2AS+Lx53CO5BqgIOh44uvhFi6MPJ+Og1EY0U8m2BzqC9eA==", "task"=>{"lead_id"=>"16", "task_type"=>"Hello", "description"=>"Is it me you're looking for?"}, "commit"=>"Create Task", "account_id"=>"1", "rep_id"=>"2", "lead_id"=>"21"}
如您所见,有一个lead_id = 16(这意味着表单正确地接受了输入),但也存在另一个lead_id = 21,正在为其创建任务。
我希望为lead_id = 16 创建任务。知道我应该做什么吗?
这是我的任务创建控制器操作
def create
@account = current_account
@rep = current_account.reps.find(params[:rep_id])
@lead = @rep.leads.find(params[:lead_id])
@task = @lead.tasks.build(new_task_params)
if @task.save
redirect_to account_rep_lead_task_path(@rep.account_id,@rep.id,@lead.id,@task)
else
render 'new'
end
end
【问题讨论】:
-
这取决于你想做什么,我想你很困惑,因为你得到了两个
lead_id。在stackoverflow.com/questions/48739251/…下方查看我的回答。
标签: ruby-on-rails forms controller ruby-on-rails-5 simple-form