Rails-маршруты, создающие дополнительную информацию в URL - PullRequest
0 голосов
/ 13 мая 2010

Скажите, если у меня есть модель под названием «доставить», и я использую маршрут URL по умолчанию:

 # Install the default routes as the lowest priority.
  map.connect ':controller/:action/:id'
  map.connect ':controller/:action/:id.:format'

Таким образом, URL доставки будет:

http://localhost:3000/deliver/123

Я пытаюсь выяснить, как использовать другое поле из базы данных рядом или вместо идентификатора.

Например. Если у меня есть поле в представлении создания, называемое «Deliveryraddress», как мне поместить это в маршруты?

Так что я могу что-то связать с этим:

http://localhost:3000/deliver/deliveraddress

Спасибо

Danny

Ответы [ 2 ]

2 голосов
/ 13 мая 2010

Поскольку ваши комментарии звучат так, будто вы пытаетесь скрыть идентификатор в своем URL, я бы посоветовал вам взглянуть на этот вопрос, который был задан несколько дней назад.

Запутывающие идентификаторы в приложении Rails

1 голос
/ 13 мая 2010

Прежде всего, URL "http://localhost:3000/deliver/123" соответствует любому правилу маршрутизации по умолчанию. Однако только после того, как вы объявите «ресурс», он сгенерирует такой RESTful URL.

В вашем случае просто реализуйте метод to_param модели Deliver:

class Deliver < ActiveRecord::Base
  def to_param
    return self.deliveraddress
  end
end

он сгенерирует URL, который вы хотите, вызвав метод url_for, например link_to @deliver

Не забудьте убедиться, что в вашей базе данных есть уникальные адреса доставки, чтобы вы никогда не нашли дублированных записей с одним адресом.

После этого вам необходимо обновить методы поиска в действиях:

def show
  @deliver = Deliver.find_by_deliver_address!(params[:id])
end

Надеюсь, этот ответ будет полезен.

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