为什么要评估if块

时间:2017-11-30 01:34:53

标签: javascript jquery ruby-on-rails forms autofill

我正在开发一个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块中的内容不应该被评估,但是我得到了未定义的方法&#39; email&#39;如果是来宾用户,则为nil类错误。

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

1 个答案:

答案 0 :(得分:1)

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

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