0

複数の方法でタスクを作成できる 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 の両方が必要なためだと思います)。

ともかく....

4

1 に答える 1

0

2つのオプションがあると思います-

  • URL内にいくつかのカスタムパラメータを指定し、それを使用してリダイレクト先を決定します
  • または、すでに提案されている別のアクションを使用します。

2 つの異なる作成アクションで問題が発生している場合は、現在のコントローラー コードとルートを投稿してください。

于 2013-10-16T14:39:55.900 に答える