Rails路由匹配控制器中的不同动作

时间:2016-06-15 18:15:23

标签: ruby-on-rails routes

我在文件中声明了以下路由:

resources :reservations do
  collection do
    resources :check_in do
      get :charges
      get :reservation_details
    end
  end
end

这些操作在我的check_in控制器中:

  def charges
    @charge = Charge.new
    @items = Product.where(hotel: current_hotel).includes(:hotel)
    calculate_totals(reservation)
    currency_divider
  end

  def reservation_details
    charges
  end

两个操作都执行相同的操作,但具有不同的视图(html)文件。

我可以以某种方式将'/ reservation_details'重定向到check_in控制器中的charge操作但保留相同的URL吗?我的意思是,让我免于在控制器中编写动作代码(只调用其他动作)。

2 个答案:

答案 0 :(得分:0)

您可以使用:

resources :reservations do
  collection do
    resources :check_in do
      get :charges
      get "/reservation_details", to: redirect('/charges')
    end
  end
end

答案 1 :(得分:0)

如下:

resources :reservations do
  collection do
    resources :check_in do
      get :charges
      get :reservation_details, to: 'check_in#charges'
    end
  end
end