0

我的模型看起来像这样:

class Listdomain < ActiveRecord::Base
   attr_accessible :domainname, :permalink
   before_create :make_it_permalink

   validates_presence_of :domainname

   private
      def make_it_permalink
       self.permalink = SecureRandom.base64(8)
      end
end

尝试在参数上加入 id 和 permalinklocalhost:3000/1-oKPgT0s0S+U=并且它有效

 #routes.rb
 match ':id' => 'homes#whoisresult', :as => :whois

 #controller
 def whoisresult
   @listdomain = Listdomain.find(params[:id])
   @domaintld = @listdomain.domainname
 end

 #model
 def to_param
   [id, permalink].join("-")
 end

尝试在参数上使用域名localhost:3000/domainuser.com,它的工作原理

 #routes.rb
 match ':domainname' => 'homes#whoisresult', :as => :whois, :constraints => { :domainname => /[^\/]+/ }

 #controller
 def whoisresult
   @listdomain = Listdomain.find_by_domainname(params[:domainname])
   @domaintld = @listdomain.domainname
 end

我想像这样使用 to_param 加入域名和永久链接:

localhost:3000/permalink-domainname

永久链接:oKPgT0s0S+U=

域名:domainuser.com

加入-

  #routes.rb
  match ':permalink' => 'homes#whoisresult', :as => :whois, :constraints => { :permalink => /[^\/]+/ }

  #controller
  def whoisresult
    @listdomain = Listdomain.find_by_permalink(params[:permalink])
    @domaintld = @listdomain.domainname # line 34
  end

  #model
  def to_param
    [permalink, domainname.downcase].join("-")
  end

我试着得到 =>localhost:3000/oKPgT0s0S+U=-domainuser.com

我收到这样的错误消息

undefined method `domainname' for nil:NilClass
app/controllers/homes_controller.rb:34:in `whoisresult'

如何在 to_param 上加入域名和永久链接?

4

1 回答 1

0
@listdomain = Listdomain.find_by_permalink(params[:permalink])

正在返回一个空结果。因此,请检查params[:permalink]以确保您传递了正确的永久链接,并检查Listdomain您的数据库中是否有带有该永久链接的数据库。

于 2013-06-14T16:24:47.357 回答