rails中的“to_param”问题

时间:2011-05-28 15:58:34

标签: ruby-on-rails ruby-on-rails-3

我有一个页面模型,我希望通过我从标题创建的句柄找到它。

class Page < ActiveRecord::Base
  belongs_to :user

  validates_presence_of :title

  def to_param
    handle
  end

  def self.make_url_safe(string)
    handle = string.titleize.gsub(/ /,'').underscore.dasherize[0..35] 
    "#{handle}/" 
  end

end

在我的控制器中,我有:

def show
    @page = Page.find_by_handle(params[:id])
 end

我正在用另一个模型做同样的事情,它工作得很好,但没有使用Page。我一直收到这个错误:

ActiveRecord::RecordNotFound in
PagesController#show

Couldn't find Page with ID=test

其中test是页面的句柄。我觉得它在几天前创建模型时工作,所以不确定什么可以改变导致问题。也许尾随/

这是日志:

Started GET "/pages/test" for 127.0.0.1 at 2011-05-28 11:53:49 -0400
  Processing by PagesController#show as HTML
  Parameters: {"id"=>"test"}
  Page Load (0.2ms)  SELECT "pages".* FROM "pages" WHERE ("pages"."id" = 0) LIMIT 1
Completed   in 12ms

ActiveRecord::RecordNotFound (Couldn't find Page with ID=test):

1 个答案:

答案 0 :(得分:3)

我会发一个答案,虽然它在上面的评论中给出:CanCan干扰to_param - 解决方案是授权控制器中的每个资源,而不是使用通用load_and_authorize_resources