试图做一些非常简单的事情。
我有一个系统,我们的客户有具有文件和注释的任务
我还可以创建与某个特定客户无关的任务。
我希望能够从客户端屏幕创建一个新任务并填充客户端字段(或让它在后台填充)而不必选择它。当然,如果我只是创建一个任务然后想将一个客户端附加到它,我将需要我的客户端选择器。
希望一切都有意义
我有一个嵌套路由如下:
resources :clients do
resources :notes
resources :tasks do
resources :notes
resources :task_files
end
end
resources :tasks do
resources :notes
resources :task_files
end
以及大量与嵌套属性等相关的东西,这些都是有效的。
我不能完全解决的一件事是如何在我刚刚创建任务时使用相同的 _form ,以及当我知道客户时创建任务时。例如clients/:id/tasks/new vs tasks/new
我的直觉是,如果我将@project 放入 _form 中:
<%= simple_nested_form_for [@client,@task], html:{multipart: true} do |f| %>
那么它不适用于没有客户的任务而:
<%= simple_nested_form_for @task, html:{multipart: true} do |f| %>
不预先选择客户端:
<%= f.input :client_id, :collection => Client.accessible_by(current_ability, :read), :as => :select, :label => "Client" %>
如果没有预先选择客户端,则使用它。
任何想法我如何让它工作,也许能够以某种方式使用参数@client.id?尝试过@Client、@Client.id 和 :client_id,但没有任何乐趣。
相信这一定很简单......
澄清一下:如果客户端存在(即通过 URL 知道),我想预先选择客户端并且不允许更改它。如果客户端 ID 不存在,我希望用户能够选择它适用于哪个客户端(或将其留空)。