Metrics / AbcSize: ветвь назначения Размер условия для создания слишком велик.[15.17 / 15] - PullRequest
0 голосов
/ 01 июня 2019

Я бы предпочел вызывать свой метод JS напрямую из контроллера, но я получаю следующую ошибку Rubocop.

Ошибка:

Metrics / AbcSize: размер условия ветви назначения длясоздать слишком высоко.[15.17 / 15]

контроллер:

 def create ...

      def create
        @profile = current_user.profiles.new(modified_profile_params)
        respond_to do |format|
          if @profile.save
            format.html { redirect_to profiles_path }
            format.js { render js: "Helpers.SearchForm.AfterSearchSubmit();" }
          else
            format.html { render action: "new" }
            format.js {
              render js:
                         "Helpers.Bootstrap.Modal.init(
                         'Title',
                         'message','ok',
                         '',
                         '#oldmodal',
                         Helpers.SearchForm.AfterSearchSubmit
                         );"
            }
          end
        end
      end

, чтобы исправить это, я попробовал следующее:

def limit_modal_javascript
           {
                  render js:
                             "Helpers.Bootstrap.Modal.init(
                             'Title',
                             'message','ok',
                             '',
                             '#oldmodal',
                             Helpers.SearchForm.AfterSearchSubmit
                             );"
                }
  end

однако я получил следующую ошибкуво время выполнения:

синтаксическая ошибка, неожиданный tLABEL, ожидающий do или '{' или '(' {render js:

1 Ответ

0 голосов
/ 02 июня 2019

Синтаксическую ошибку можно исправить, переместив render перед открытием { в методе limit_modal_javascript.

Однако есть и лучшие способы структурировать это.Вместо того, чтобы иметь JavaScript в контроллере, вы можете переместить его в шаблон, например app/views/products/create_succeeded.js.Затем вы можете сделать это из контроллера с помощью:

format.js { render "products/create_succeeded" }
...