2013-11-15 2 views
0

Я надеюсь, что это очень простая вещь, которую я просто не вижу. Я довольно новичок в рельсах, поэтому я думаю, что это прямо под моим носом.Изменение имени ресурса ресурса для определенного действия

Мое приложение имеет то, что вы называете stacks и я создал ресурс для этого:

resources :stacks, only: [:new, :create, :show]

Я хочу, чтобы изменить маршрут для показа действия от /stacks/:id до /stack/:id

Я добавил этот над ресурсом, но он не работал:

get '/stacks/:id', to: 'stacks#show', as: 'stack'

Спасибо!

Edit: Код

get '/stacks/:id', to: 'stacks#show', as: 'stack' 
resources :stacks, only: [:new, :create, :show] 

ответ

1

Рубин на Rails pluralizes имен ресурсов по умолчанию для целей маршрутизации, имен таблиц базы данных и т.д., но вы можете переопределить конкретные случаи такого поведения.

Перейдите в свою папку приложений Ruby on Rails (мы просто назовем ее «.app» для наших целей здесь). Открыть .app/конфигурации/Инициализаторы/inflections.rb в редакторе, и вы увидите следующее (Rails 4):

# Be sure to restart your server when you modify this file. 

# Add new inflection rules using the following format. Inflections 
# are locale specific, and you may define rules for as many different 
# locales as you wish. All of these examples are active by default: 
# ActiveSupport::Inflector.inflections(:en) do |inflect| 
# inflect.plural /^(ox)$/i, '\1en' 
# inflect.singular /^(ox)en/i, '\1' 
# inflect.irregular 'person', 'people' 
# inflect.uncountable %w(fish sheep) 
# end 

# These inflection rules are supported but not enabled by default: 
# ActiveSupport::Inflector.inflections(:en) do |inflect| 
# inflect.acronym 'RESTful' 
# end 

Добавить инфлектора так, что «стек» это множественное число от «стек», как так:

ActiveSupport::Inflector.inflections do |inflect| 
    inflect.irregular 'stack', 'stack' 
end 

Это должно сделать трюк для вас.

+0

Это замечательно, но разве это не изменяет весь ресурс? Было бы замечательно, если бы действие 'index' могло быть'/stacks', а действие 'show' могло бы быть'/stack /: id' – DavidVII

+0

Когда вы говорите, что добавили get '/ stacks /: id', чтобы: ' stacks # show ', as:' stack 'над ресурсом, где и как вы его добавили, и как вы используете его на вашем стеке_контроллере.rb? – MarsAtomic

+0

'get '/ stacks /: id', to: 'stackacks # show', as: 'stack' Ресурсы: стеки, только: [: new,: create,: show]' – DavidVII

Смежные вопросы