加入域名和永久链接到to_param

时间:2013-06-14 16:16:49

标签: ruby-on-rails ruby-on-rails-3.2

我的模型看起来像这样:

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

尝试在参数localhost:3000/1-oKPgT0s0S+U=上加入id和永久链接,并且它可以正常工作

 #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

尝试在params 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

我试过get =&gt; localhost:3000/oKPgT0s0S+U=-domainuser.com

我收到了这样的错误消息

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

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

1 个答案:

答案 0 :(得分:0)

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

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