controller - Metrics/AbcSize:创建的分配分支条件大小太高。[15.17/15]
问题描述
我宁愿直接从控制器调用我的 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:
解决方案
您可以通过移动到方法中render
的开头之前来修复语法错误。{
limit_modal_javascript
但是,有更好的方法来构建它。您可以将其移动到模板中,而不是将 JavaScript 放在控制器中,例如app/views/products/create_succeeded.js
. 然后,您可以使用以下方法从控制器渲染它:
format.js { render "products/create_succeeded" }
推荐阅读
- google-cloud-platform - GCP AI 平台管道 CLI
- java - Android:有没有办法在每个布局上应用 android:filterTouchesWhenObscured="true" ?
- html - 使用 flexbox 的响应式投资组合/联系人
- javascript - 返回 LocalStorage Key 中的数组数
- vb.net - 在 Visual Studio 2017 中开发案例工具
- flutter - Flutter FutureBuilder 不会在应用更新时等待
- kubernetes - 无法在 Kubernetes 中连接前端和后端部署
- flutter - Flutter基础相关的多个问题
- python - TypeError:“GetAggregatedReport”对象不支持索引
- flutter - 减小图像的大小会导致部分图像在颤动中丢失