かなり簡単なことをしようとしています。
ファイルとメモを持つタスクを持つクライアントがいるシステムがあります
特定のクライアントに関係のないタスクを作成することもできます。
クライアント画面から新しいタスクを作成し、クライアント フィールドを選択せずに入力できるようにしたい (またはバックグラウンドで入力できるようにしたい)。もちろん、タスクを作成してからそれにクライアントをアタッチしたい場合は、クライアント セレクターが必要です。
すべてが理にかなっていることを願っています
次のようにネストされたルートがあります。
resources :clients do
resources :notes
resources :tasks do
resources :notes
resources :task_files
end
end
resources :tasks do
resources :notes
resources :task_files
end
そして、機能するネストされた属性などに関連するものの負荷。
うまくいかないことの 1 つは、タスクを作成するときと、クライアントを知っているときにタスクを作成するときに、同じ _form を使用する方法です。例 client/:id/tasks/new vs tasks/new
私の直感では、@project を _form a la に入れると、次のようになります。
<%= 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が存在しない場合、ユーザーが適用するクライアントを選択できるようにしたい(または空白のままにしておく)。