我有一个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
我基本上想用像
之类的东西控制响应if request.path.include? "quick_create"
能够在快速创建时标记错误。似乎有两件事。 1. request.path if语句不起作用 2.尝试反馈到quick_create页面时的@task会发生错误(因为我认为它同时需要@task和@tasks)。
无论如何......
答案 0 :(得分:0)
我想你可能有两种选择 -
如果您遇到两个不同的创建操作问题,请发布当前控制器代码和您的路线,否则我们无法帮助您。