У меня проблема с моими маршрутами, и я думаю, что это связано с неправильным переданием параметров. Всякий раз, когда я пытаюсь идти страницу пользователям редактировать, я получаю следующее сообщение об ошибке:Пользователь Правка и удаление маршрутов предоставляют ошибки, маршрутизация пространства имен
No route matches {:action=>"edit", :controller=>"admin/users", :locale=>#<User id: 10, first_name: "Chase", last_name: "Jensen", email: "[email protected]", password_digest: "$2a$10$xTvG5gP73w2/nVW5jD.BSO3Z46S5v9oGogmfjo3gsGHf...", access_level: 2, last_login: nil, auth_token: nil, created_at: "2012-04-20 02:19:33", updated_at: "2012-04-20 02:19:33">}
Я заметил, что он говорит: локаль => ID # User (хэш), но я не уверен, что это проблема , Если это так, я не знаю, почему он помещает пользовательский хэш как: locale? Вот некоторые из моих приложений код
код, который он жалуется:
приложение/просмотров/администратора/пользователей/index.html.erb
<% @owners.each do |owner| %>
<%= owner.first_name %>
<%= link_to "Edit Owner", edit_admin_user_path(owner) %>
<%= link_to "Delete Owner", admin_user_path(owner), :method => :delete, :confirm => "Are you sure you want to delete this owner?" %>
<% end %>
USers Controller
class Admin::UsersController < Admin::BaseController
def edit
@user = User.find(params[:id])
end
def update
@user = User.find(params[:id])
if @user.update_attributes(params[:user])
flash[:notice] = "User has been updated."
redirect_to @user
else
flash[:alert] = "User has not been updated."
render :action => "edit"
end
end
def index
@owners = User.all
end
end
маршруты. rb (укороченный)
scope ":locale", locale: /#{I18n.available_locales.join("|")}/ do
namespace :admin do
resources :users do
collection do
get :newowner
end
end
end
end
rake routes output
newowner_admin_users GET /:locale/admin/users/newowner(.:format) {:locale=>/en|es/, :action=>"newowner", :controller=>"admin/users"}
admin_users GET /:locale/admin/users(.:format) {:locale=>/en|es/, :action=>"index", :controller=>"admin/users"}
POST /:locale/admin/users(.:format) {:locale=>/en|es/, :action=>"create", :controller=>"admin/users"}
new_admin_user GET /:locale/admin/users/new(.:format) {:locale=>/en|es/, :action=>"new", :controller=>"admin/users"}
edit_admin_user GET /:locale/admin/users/:id/edit(.:format) {:locale=>/en|es/, :action=>"edit", :controller=>"admin/users"}
admin_user GET /:locale/admin/users/:id(.:format) {:locale=>/en|es/, :action=>"show", :controller=>"admin/users"}
PUT /:locale/admin/users/:id(.:format) {:locale=>/en|es/, :action=>"update", :controller=>"admin/users"}
DELETE /:locale/admin/users/:id(.:format) {:locale=>/en|es/, :action=>"destroy", :controller=>"admin/users"}
Я так смущен, почему я получаю эту ошибку, когда маршруты, похоже, совпадают. Кто-нибудь знает об этом? Заранее спасибо.
Edit:
В этой точке местности должен быть установлен в контроллере приложения
before_filter :set_locale
private
def set_locale
I18n.locale = params[:locale] if params[:locale].present?
end
и на мой взгляд, приложение приложение/просмотров/макеты/application.html.erb
<%= link_to_unless_current "English", locale: "en" %> |
<%= link_to_unless_current "Spanish", locale: "es" %>
И не по умолчанию ли он EN?
Хм, похоже, не работает, я думаю, что уже должен быть установлен в этот момент, см. Мое редактирование – ruevaughn