УСПОКОИТЕЛЬНЫЕ ресурсы направляющих с помощью to_param для поля, которое содержит символы разделителя

CGBitmapInfo.AlphaInfoMask не является действительной информацией растрового изображения.

Попробуйте установить CGBitmapInfo.AlphaLast или CGBitmapInfo.AlphaFirst.

8
задан nfm 4 June 2009 в 06:31
поделиться

3 ответа

Проблема решена, большое спасибо http://poocs.net/2007/11/14/special-characters-and-nested-routes (и см. http://dev.rubyonrails.org/ticket/6426 для дополнительной справки)

Мне нужно было добавить: requirements => {: website_id => regexp} для каждого вложенного маршрута, который также собирался включить доменное имя с точками в нем.

Вот мой рабочий маршрут:

map.resources :websites, :requirements => { :id => /[a-zA-Z0-9\-\.]+/ } do |websites|
    websites.with_options :requirements => { :website_id => /[a-zA-Z0-9\-\.]+/ }  do |websites_requirements|
        websites_requirements.resources :dns_records
    end
end

<%= link_to 'New DNS Record', new_website_dns_record_path(@website) %>

# Produces the URL
/websites/asd.com/dns_records/new

Вызов

websites.with_options

просто соответствует DRY, так что: требования не нужно указывать для всех вложенных маршрутов для веб-сайтов. Так что у меня также может быть

websites_requirements.resources :accounts
websites_requirements.resources :monthly_bandwidth_records
etc.
4
ответ дан 5 December 2019 в 23:17
поделиться

Это интересный вопрос. Я не думаю, что вы сможете избавиться от плохого '.: format' , добавленного в конец, если вы выполните базовую map.resources . Если вам нужны точки в именах, вы не соответствуете обычным стилям рельсов, и я думаю, что пользовательский маршрут может быть в порядке, если вам абсолютно НУЖНА '.'. в URL.

Однако, возможно, вам следует подумать об изменении определения to_param . Что бы вы подумали об использовании следующего?

def to_param
   domain_name.sub('.','_dot_')
end

Я думаю, что если вы используете это для управления веб-сайтами клиентов, это довольно элегантный способ создания хороших (и оптимизированных для SEO) URL-адресов, например

/websites/asd_dot_com/dns_records/new
/websites/asd_dot_com/
1
ответ дан 5 December 2019 в 23:17
поделиться

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

http://zargony.com/2009/05/05/routing-parameters-with-a-dot

0
ответ дан 5 December 2019 в 23:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: