2010-04-16 5 views
0

Wow, passer à REST est un paradigme différent à coup sûr et est principalement un mal de tête en ce moment.Rails forment avec une meilleure URL

vue

<% form_tag (businesses_path, :method => "get") do %> 
<%= select_tag :business_category_id, options_for_select(@business_categories.collect  {|bc| [bc.name, bc.id ]}.insert(0, ["All Containers", 0]), which_business_category(@business_category)), { :onchange => "this.form.submit();"} %> 
<% end %> 

contrôleur

def index 
@business_categories = BusinessCategory.find(:all) 
if params[:business_category_id].to_i != 0 
    @business_category = BusinessCategory.find(params[:business_category_id]) 
    @businesses = @business_category.businesses 
else 
@businesses = Business.all 
end 
respond_to do |format| 
    format.html # index.html.erb 
    format.xml { render :xml => @businesses } 
end 

fin

routes

map.resources 

Ce que je veux à est d'obtenir une meilleure URL que ce que cette forme présente qui est le suivant aile: http://localhost:3000/businesses?business_category_id=1

sans repos j'aurais faire quelque chose comme http://localhost:3000/business/view/bbqbbq comme permalien ou je l'aurais fait http://localhost:300/business_categories/view/bbq et obtenir de l'entreprise qui sont associés à la catégorie mais je ne sais pas vraiment la meilleure façon de le faire . Donc, les deux questions sont quelle est la meilleure logique de trouver une entreprise par ses catégories en utilisant la dernière forme et le numéro deux comment l'obtenir dans une jolie URL tout au long des routes RESTful dans Rails.

Répondre

1

Si vous avez plus d'information à partager au sujet de la catégorie d'affaires à côté juste de les énumérer tous, vous pouvez utiliser le « show » d'une catégorie d'affaires

http://localhost:300/business_categories/1

Si vous voulez qu'il ait un nom significatif au lieu de « 1 » (comme le nom de la catégorie) vous pouvez utiliser friendly_id plug-in, qui fait juste que :)

class BusinessCategory < ActiveRecord::Base 
    has_friendly_id :name, :use_slug => true 
end 

Ensuite, vous pouvez utiliser http://localhost:300/business_categories/bbq

+0

En quoi est-ce différent de permalink_fu? – s84

Questions connexes