【问题标题】:Metrics/AbcSize: Assignment Branch Condition size for create is too high. [15.17/15]Metrics/AbcSize:创建的分配分支条件大小太高。 [15.17/15]
【发布时间】:2019-10-17 23:16:54
【问题描述】:

我更愿意直接从控制器调用我的 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:

【问题讨论】:

    标签: controller ruby-on-rails-5.2 rubocop


    【解决方案1】:

    您可以通过将render 移动到limit_modal_javascript 方法中的开头{ 之前来修复语法错误。

    但是,有更好的方法来构建它。您可以将其移动到模板中,而不是将 JavaScript 放在控制器中,例如app/views/products/create_succeeded.js。然后你可以从控制器渲染它:

    format.js { render "products/create_succeeded" }
    

    【讨论】:

    • 我注意到你有 create.succeeded 和 create_succeeded,这是故意的吗?
    • 应该是“create_succeeded”,我已经更正了。
    猜你喜欢
    • 2021-06-16
    • 1970-01-01
    • 2020-05-22
    • 1970-01-01
    • 2016-04-13
    • 2023-04-07
    • 2015-09-05
    • 2018-06-14
    • 2022-06-20
    相关资源
    最近更新 更多