在haml javascript块中插入ruby if语句

Sac*_*cha 12 javascript ruby haml ruby-on-rails

这是我目前的代码:

:javascript
    // do something
- if current_user.role? :client
    :javascript
        //do something else
Run Code Online (Sandbox Code Playgroud)

它显然不是很干净,因为我重复了:javascript haml过滤器.我想避免这种情况,但我不知道如何在HAML:javascript块中正确编写Ruby"if"语句.

我知道如何使用#{}插入变量,但是如何对整个if/for/etc执行相同的操作.声明?

Cal*_*leb 5

我这样做:

if(#{params[:param_to_check_for].blank? ? "true" : "false"})
Run Code Online (Sandbox Code Playgroud)

在上述情况下,条件为 params[:param_to_check_for].blank?

它将 JavaScript 呈现为:if(false)if(true)


Nic*_*gan -3

这是非常正确的。

另一种选择是您可以将其放在.js.erb部分中并从您的 haml 视图中渲染它。

然后你就可以做

// do something
<% if condition == true %>
  // do something else
<% end %>
Run Code Online (Sandbox Code Playgroud)