我有一些网址
get '/vacancies/:id(/:mode)', to: 'vacancies#show', as: 'vacancy', constraints: { mode: /(resume|file)/}
在show view中,用户可以填写表单并向服务器发送请求。 如果用户发送了无效的参数,我应该将其重新定向,显示验证错误,并且我应该保持填充参数。
我该如何实现这些东西?
upd1
典型的rails解决方案类似于render :new
或render :edit
,但就我而言,我无法render :show
,因为它会呈现'/vacancies/:id
路由的视图不适用于'/vacancies/:id(/:mode)
。
此外,我尝试了redirect_to :back
,除了一件事情之外,这样做很好:params不会通过请求传递。
我猜在response
对象中有解决方案,但还没有找到
UPD2
class VacanciesController < ApplicationController
# vacancies/:id - is just show view
# vacancies/:id/resume - is show view with form
# vacancirs/:id/file - is show view with form for sending pdf|doc|etc
def show
@vacancy = Vacancy.find(params[:id])
end
def create
if Vacancy::SaveResume.new(resume_params).call.valid?
redirect_to vacancies_path
else
# didn't know what to do there
end
end
end
答案 0 :(得分:0)
在您的控制器中,为了维护这些参数,您将重新渲染相同的视图模板而不是重定向。使用new和create动作会发生很多事情,但同样的原则适用于任何地方,例如在show动作中显示表单。
{{1}}