2011-03-13 114 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