複数の方法でタスクを作成できる Rails アプリがあります
a) 多くのオプションを備えた通常のタスクの新しい画面
b) クイック作成を可能にする最小限のアクションと最小限のフィールドのみを含むクイックタスク作成画面。そして、アクションのリスト
作成が成功した後、私は欲しい
a) 標準の表示フォームにリダイレクトする
b) 空白のクイック作成ボックスとリストに新しいタスクがあるクイック編集ページにリダイレクトします。
作成が検証で失敗した場合
a) フィールドが強調表示された編集画面にリダイレクトする
b) フィールドが強調表示され、データが表示された状態でクイック作成画面にリダイレクトします。
create Respond_to if.save? を編集してみました。しかし、それは両方の場合にすべてに当てはまるようです。
一般的に(クライアントが選択されていない)、またはクライアントが自動選択されるクライアントの下のネストされたルートとしてタスクを作成するという点で少し複雑です。理想的には、そのネストされたルートの場所に戻りたいと思います。
呼び出し元を認識する if パラメータを使用して応答を制御したい
if from quick_create
if @task.save?
redirect
else
reload table and clear
if from new
if task.save?
何か案は?
現在のコントローラー コードとルートの追加:
routes.rb
get 'tasks/quick_create' => 'tasks#quick_create'
-----
resources :clients do
match 'tasks/quick_create' => 'tasks#quick_create'
----
tasks_controller.rb
def create
@task = Task.new(params[:task])
@task.practice_id = current_user.practice_id
unless @task.recurring.present?
@task.build_recurring
end
@task.create_recurring_tasks
if params[:batch_task] == "Create Task"
@client = Client.find(params[:client_id])
@task.build_batch_task(@client)
end
respond_to do |format|
if @task.save
format.html { redirect_to @task, notice: 'Task was successfully created.' }
format.json { render json: @task, status: :created, location: @task }
else
format.html { render action: "new" }
format.json { render json: @task.errors, status: :unprocessable_entity }
end
end
end
def quick_create
if params[:client_id]
@client = Client.find(params[:client_id]).tasks
@tasks = @client.accessible_by(current_ability, :read).order(:due_date)
else
@tasks = Task.accessible_by(current_ability, :read).order(:due_date)
end
@task = Task.new
@task.status = "Not Complete"
#@task.task_files.build
@task.build_recurring
respond_to do |format|
format.html # index.html.erb
format.json { render json: @tasks }
end
end
Ibasically のようなもので応答 do ビットを制御したい
if request.path.include? "quick_create"
また、クイック作成でエラーにフラグを立てることができます。2つのことがあるようです。1. request.path if ステートメントが機能しない 2. @task が quick_create ページにフィードバックしようとするとエラーが発生します (@task と @tasks の両方が必要なためだと思います)。
ともかく....