Есть ли способ перегрузить map.resources в рельсах? - PullRequest
2 голосов
/ 21 мая 2009

Я пытаюсь создать чистые URL в рельсах. Я установил PermalinkFu, и я могу генерировать ссылки просто отлично. Я хотел бы сохранить свой ресурс RESTful. Есть ли способ перегрузить:

map.resources :location

для возврата: переменная постоянной ссылки вместо: id?

Аналогично тому, как я могу создать:

map.connect 'location/:permalink' :controller => 'location', :action => 'show'

Примечание: Какова наилучшая практика для обработки постоянных ссылок, если они используются только для отображения действия просмотра / показа, а затем используют: id для редактирования / уничтожения / и т.д. И стоит ли мне вообще беспокоиться о контроллере, использующем: id вместо: permalink в качестве имени переменной?

Ответы [ 3 ]

2 голосов
/ 21 мая 2009

Это мой способ решить эту проблему:

используйте метод to_param в вашей модели. Местоположение:

def to_param
  permalink
end

и в ваших маршрутах.rb

map.resources :location

Нет необходимости добавлять правило для постоянной ссылки

тогда вы можете найти в вашем контроллере вот так

@location = Location.find_by_permalink params[:id]

Надеюсь, это сработает.

0 голосов
/ 21 мая 2009

Есть ли причина, по которой вы не можете переопределить метод to_param в вашей модели Location? У Райана Бейтса есть Railscast, который объясняет, как это сделать .

Если вы хотите быть пуристом, вам следует использовать постоянную ссылку для всех действий, но, несомненно, удобнее использовать числовой идентификатор для действий редактирования и уничтожения. Я думаю, это зависит от того, обеспокоены ли вы людьми, просматривающими HTML и способными видеть фактические первичные ключи ваших записей. Некоторые могут подумать, что дыра в безопасности.

0 голосов
/ 21 мая 2009

Ищите ответ на этот вопрос. : path_prefix, кажется, должна решить эту проблему, но я не понимаю, как ее использовать.

http://groups.google.com/group/rubyonrails-talk/browse_thread/thread/7fc46fd8e354792b/3e364626d9d67403?lnk=gst&q=restful+two+parameters

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