为什么要评估 if 块

Why is the if block being evaluated

我正在开发一个 rails 项目,如果用户已登录,我会通过 JQuery 从电子邮件字段自动填写表单。我正在使用设计进行身份验证。

var user_signed_in = "<%= current_user.blank? %>";

if (!user_signed_in){
  var user_signed_in = "<%= current_user.email %>";
  $('input#inquiry_from_email').val(user_signed_in);
}

根据代码,不应评估 if 块内的内容,但我得到未定义的方法 'email' 对于 nil class 来宾用户的错误。

如果current_user.blank?被评估为 false,我事先在 if 块中检查它,我不明白为什么 if 中的语句被评估。

将执行此代码,因为您在 JavaScript 代码中有 ruby 代码。当页面被提供时,它将执行 JavaScript 代码。您需要将整个代码放在 if block

<% if current_user %>  
    var user_signed_in = "<%= current_user.email %>";
    $('input#inquiry_from_email').val(user_signed_in);  
<% end %>