Администрирование бэкенда в Ruby on Rails

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, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)

28
задан Peter Mortensen 20 July 2014 в 06:50
поделиться

2 ответа

Я думаю, что пространства имен являются решением проблемы, которую Вы имеете здесь:

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 и принуждение себя вниз, что маршрут может сэкономить много времени в другом месте. Хотя, если Вы наследовали приложение, это - спорный вопрос к настоящему времени.

53
ответ дан Peter Mortensen 28 November 2019 в 02:51
поделиться

Я использовал Оптимизированный довольно экстенсивно.

Для получения Направления потока, работающего Вас, создают Ваши собственные контроллеры - таким образом, можно на самом деле выполнить его полностью кроме остальной части приложения, и можно даже выполнить его в отдельной 'администраторской' папке и пространстве имен, которое может быть защищено с .

Вот Потребительский контроллер из недавнего приложения:

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
5
ответ дан Toby Hede 28 November 2019 в 02:51
поделиться
Другие вопросы по тегам:

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