将表格参数传递给url_for / redirect_to / render

时间:2016-12-16 09:21:40

标签: ruby-on-rails ruby

我有一些网址

  get '/vacancies/:id(/:mode)', to: 'vacancies#show', as: 'vacancy', constraints: { mode: /(resume|file)/}

在show view中,用户可以填写表单并向服务器发送请求。 如果用户发送了无效的参数,我应该将其重新定向,显示验证错误,并且我应该保持填充参数。

我该如何实现这些东西?

upd1

典型的rails解决方案类似于render :newrender :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

1 个答案:

答案 0 :(得分:0)

在您的控制器中,为了维护这些参数,您将重新渲染相同的视图模板而不是重定向。使用new和create动作会发生很多事情,但同样的原则适用于任何地方,例如在show动作中显示表单。

{{1}}