2011-03-13 102 views
0

我使用友好的網址。Rails友好的Url如何防止重複?和路由

當我訪問http://localhost:3000/9我使用的問題它顯示在同一頁面http://localhost:3000/vind-rejse

我的類別VIND-rejse有9

的ID我如何軌只對http://localhost:3000/vind-rejse應對呢?

我如何鏈接到konkurrancers顯示操作?

我Kategoris控制器:

def show 
    @kategori = Kategori.find(params[:id]) 
    @konkurrancer = @kategori.konkurrancers.find(:all) 

    respond_to do |format| 
     format.html # show.html.erb 
     format.xml { render :xml => @kategori } 
    end 
    end 

我Konkurrancers控制器:

def show 
    @konkurrancer = Konkurrancer.find(params[:id]) 

    respond_to do |format| 
     format.html # show.html.erb 
     format.xml { render :xml => @konkurrancer } 
    end 
    end 

我的路線:

match ':kategoris/:id' => 'konkurrancers#show' 
match '/:id' => 'kategoris#show' 
+0

你用'高清to_param#... end'? – errorhandler 2011-03-13 21:34:33

+0

是保護 DEF assign_cached_slug \t self.cached_slug = self.name.gsub(/ \ S + /, '_')GSUB(/ [^ \ W \ - ] /, '')。 端 DEF to_param self.name end – 2011-03-13 21:38:07

+0

你可以發佈你的控制器代碼(show action)嗎? – errorhandler 2011-03-13 21:46:39

回答

1

像這樣將工作:

@kategori = Kategori.find_by_name!(params[:id]) 

,併爲你的路由

match ':kategoris/:id' => 'konkurrancers#show', :as => 'whatever' 

,並在您的意見

<%= link_to "Whatever", whatever_path(9) %> 
+1

我只是建議使用find_by_name!和find_by_name,這樣如果沒有記錄被發現,它會引發錯誤而不是返回nil。 – sethvargo 2011-03-13 22:21:29

+1

謝謝!更新了答案.. – errorhandler 2011-03-13 22:23:41