当我想要打开或过期的自定义操作时,Rails会显示操作

时间:2018-07-25 21:56:18

标签: ruby-on-rails-3 routes

我基本上是想做一个自定义索引 在我的route.rb中,我有:

resources :tokens do
  resources :visits
  collection do 
    get :open
    get :expired
  end
end

我的路线显示为:

 open_tokens GET    /tokens/open(.:format)                                 tokens#open
 expired_tokens GET    /tokens/expired(.:format)                              tokens#expired

我已经在令牌控制器中定义了开放和过期

 def open

       @q = Token.open_token.includes(:households, :visits).search(params[:q])
    @tokens = @q.result

       respond_to do |format|
       format.html {render template: 'tokens/open'}
       end
  end

   def expired

  @q = Token.expired_token.includes(:households, :visits).search(params[:q])
    @tokens = @q.result

  respond_to do |format|
      format.html {render template: 'tokens/expired'}
   end
  end

但是它出现在我的显示控制器上,并显示以下错误:

Couldn't find Token with id=open

它在我的“显示”操作时崩溃:

更好的错误将请求显示为:

{“动作” =>“显示”,“控制器” =>“令牌”,“ id” =>“打开”}

在我看来,该动作应该在没有参数的情况下打开

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

我想我可能已经回答了我的问题,因为看来Rails每个控制器只能有一个索引,所以我无法定义另一个充当索引的视图。

所以现在我想做的是传递一个参数,这样我就可以应用开放范围或过期范围