如何确定在Rails中进行哪个重定向?

时间:2015-10-16 12:51:31

标签: ruby-on-rails ruby-on-rails-4 callback controller

我的应用程序可以使用两条路径。

路径1:正在编辑有效记录。

  1. 用户转到persons#show
  2. 用户点击修改转到persons#edit
  3. 更新后返回persons#show
  4. 路径2:正在编辑无效记录。

    1. 用户转到persons#invalid_records
    2. 用户点击修改转到persons#edit
    3. 更新后(如果成功)返回persons#show
    4. 如何将路径2 最终返回persons#invalid_records而不是persons#show

      根据要求修改发布路线:

      resources :persons do
        scope module: :persons do
          resources :notes
          resources :reports
        end
        collection do
          match 'invalid_records' => 'persons#invalid_records', via [:get], as :invalid_records
        end
        member do
          get 'transactions'
        end
      end
      

1 个答案:

答案 0 :(得分:0)

所以我想发一个答案来帮助让任何人开始可能会感到困惑。感谢@MaxWilliams的想法。

我添加了以下内容......

<%= link_to "Edit", edit_person_path(record, :invalid_record => true) %>

以及我_form.html.erb

上的隐藏字段
<%= f.hidden_field :invalid_record, :value => params[:invalid_record] %>

最后在persons_controller.rb

def update
  respond_to do |format|
    if @person.update(person_params)
      if params[:person][:invalid_record] == true
         #...
      else
         #...
      end
    else
      # ...
    end
  end
end