我希望直接从控制器调用我的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或'{'或'('{ js:
答案 0 :(得分:0)
您可以通过在render
方法中将{
移动到打开limit_modal_javascript
之前来解决语法错误。
但是,有更好的方法来构造它。您可以将其移动到模板中,而不是在控制器中包含JavaScript。 app/views/products/create_succeeded.js
。然后,您可以使用以下命令从控制器进行渲染:
format.js { render "products/create_succeeded" }