NullPointerException
s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException
. Они наиболее распространены, но другие способы перечислены на странице NullPointerException
javadoc.
Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException
, be:
public class Example {
public static void main(String[] args) {
Object obj = null;
obj.hashCode();
}
}
В первой строке внутри main
я явно устанавливаю ссылку Object
obj
равной null
. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException
, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.
(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)
Я думаю, что пространства имен являются решением проблемы, которую Вы имеете здесь:
map.namespace :admin do |admin|
admin.resources :customers
end
, Который создаст маршруты admin_customers
, new_admin_customers
, и т.д.
Тогда в app/controller
каталог, который Вы можете иметь admin
каталог. В Вашем администраторском каталоге создайте администраторский контроллер:
./script/generate rspec_controller admin/admin
class Admin::AdminController < ApplicationController
layout "admin"
before_filter :login_required
end
Тогда создают администраторский потребительский контроллер:
./script/generate rspec_controller admin/customers
И делают этот inhert из Вашего ApplicationController:
class Admin::CustomersController < Admin::AdminController
Это будет искать представления в app/views/admin/customers
и будет ожидать расположение в app/views/layouts/admin.html.erb
.
можно тогда использовать, какой бы ни плагин или кодирует Вас, любят на самом деле делать Ваше администрирование, направление потока, ActiveScaffold, независимо от того, что лично мне нравится использовать resourcecs_controller
, поскольку это сохраняет Вас много времени, если Вы используете архитектура стиля REST и принуждение себя вниз, что маршрут может сэкономить много времени в другом месте. Хотя, если Вы наследовали приложение, это - спорный вопрос к настоящему времени.
Я использовал Оптимизированный довольно экстенсивно.
Для получения Направления потока, работающего Вас, создают Ваши собственные контроллеры - таким образом, можно на самом деле выполнить его полностью кроме остальной части приложения, и можно даже выполнить его в отдельной 'администраторской' папке и пространстве имен, которое может быть защищено с .
Вот Потребительский контроллер из недавнего приложения:
class CustomersController < ApplicationController
layout 'streamlined'
acts_as_streamlined
Streamlined.ui_for(Customer) do
exporters :csv
new_submit_button :ajax => false
default_order_options :order => "created_at desc"
list_columns :name, :email, :mobile, :comments, :action_required_yes_no
end
end