Я относительно новичок в рубинах на рельсах, поэтому этот вопрос может быть простым. Rails делает много магии, и я не уверен, где искать такие вещи, потому что я не знаю, какая часть фреймворка виновата.map.resource и соглашение об именах для singleton
Я в основном сделал authlogic_example и прошивал код с последующим кодом. Мой routes.rb выглядит следующим образом
map.root :controller => "user_session", :action => "new" # optional, this just sets the root route
map.resources :users
map.resource :user_session
Как вы можете видеть, у меня есть контроллер с именем user_session. user_session имеет три действия новый, создать и уничтожить. Я могу достигнуть контроллеров на
localhost:3000/user_sessions/[new,destroy,create].
Я также могу достигнуть нового действия на
localhost:3000/user_session/new
для уничтожения или создать я получаю ошибку маршрутизации здесь. Согласно documentation, первый случай должен быть стандартным: «Особое имя присваивается map.resource. Имя контроллера по умолчанию все еще взято из имени множественного числа».
Моя проблема сейчас в том, что link_to только в единственном числе от имени контроллера, где я могу только достигнуть нового, но не уничтожить
<%= link_to "singular", :controller=>"user_session", :action=>"destroy" %>
#=> http://localhost:3000/user_session/destroy
<%= link_to "plural", :controller=>"user_sessions", :action=>"destroy" %>
#=> http://localhost:3000/user_session
Это довольно запутанным и даже не близко к тому, что я ожидал, но и вызывает проблемы: я не могу
redirect_to :controller=>"user_sessions", :action=>"destroy"
потому, что я попадаю в
http://localhost:3000/user_session
Как я уже упоминал, я довольно новичок в рельсах, поэтому у меня может не быть правильного способа мышления. Можете ли вы указать мне на все, что описывает это поведение? Как я могу решить эту проблему?
Works. Благодарю. ;-) – sebastiangeiger