Rails форма с лучшим URL - PullRequest
       0

Rails форма с лучшим URL

0 голосов
/ 16 апреля 2010

Ух ты, переход на REST - это совершенно другая парадигма, и сейчас это, в основном, головная боль.

вид

<% 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 %>

контроллер

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

конец

маршруты

map.resources 

То, что я хочу получить, это получить лучший URL, чем то, что представляет эта форма, а именно: http://localhost:3000/businesses?business_category_id=1

Без REST я бы сделал что-то вроде http://localhost:3000/business/view/bbq bbq в качестве постоянной ссылки, иначе я бы сделал http://localhost:300/business_categories/view/bbq и получил бы бизнес, связанный с категорией, но я не знаю, как лучше всего это сделать.

Итак, два вопроса: какова лучшая логика поиска бизнеса по его категориям, используя последнюю форму и номер два, как получить это в симпатичном URL по всем маршрутам RESTful в Rails.

1 Ответ

1 голос
/ 16 апреля 2010

Если у вас есть больше информации, чтобы поделиться информацией о бизнес-категории, помимо простого перечисления их всех, вы можете использовать «шоу» бизнес-категории

http://localhost:300/business_categories/1

Если вы хотите, чтобы оно имело осмысленное имя вместо «1» (например, название категории), вы можете использовать плагин friendly_id , который делает именно это:

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

Тогда вы можете использовать http://localhost:300/business_categories/bbq

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...