在 haml 脚本中调用 javascript 函数

Calling javascript function within haml script

我是 javascript、html 和 haml 的新手,所以希望答案对你们中的一些人来说是显而易见的……

请原谅我对这些语言的理解不足。

我试图在 if 语句中调用 javascript 函数(整个脚本是用 haml 编写的)。一旦计算结果为 1,即 true,它将在 do 循环中执行代码。这是代码:

.container
  %section#admin-order-list
    %table.table
      %thead
        %tr
           %th Client Name
           -# %th Client Email
           %th Client Phone
          %th Expert Name
          -# %th Expert Email
          %th Expert Phone
          -# %th Duration
          %th Date Requested
          %th Conference Number
      %tbody
        - @orders.each do |order|
          -if (check_valid(order.requester_id, order.user_id) == 1) 
            - requester = User.find(order.requester_id)
            - my_expert = User.find(order.user_id)
            %tr
              %td
                = requester.first_name
                = requester.last_name
              -# %td= requester.email
              %td
                = requester.phone_number
              %td
                = my_expert.first_name
                = my_expert.first_name
                = my_expert.last_name
              -# %td= order.user.email
              %td
                = my_expert.phone_number
              -# %td= order.duration
              %td
                = format_date(order.created_at)
              %td
                = order.conference_number

:javascript
  function check_valid(the_requester, the_expert){
    if (typeof the_requester !== 'undefined' && typeof the_expert !== 'undefined') {
      return 1;
    }
    else {
      return 0;
    }
  }

您混合了服务器端和客户端执行。您正在尝试从 Rails(服务器端)调用 javascript check_valid 函数(客户端)。这是行不通的。

作为学习练习,在 Rails 帮助程序中重新实现您的业务逻辑,您可以完全按照自己的方式进行编码,然后摆脱它 javascript。

# app/helpers/application_helper.rb
module ApplicationHelper
  def check_valid(one_id, other_id)
    one_id && other_id
  end
end

然后考虑完全重构所有设计不当的代码,并将那些 requestermy_expert 加载到控制器中的实例 Ruby 变量中,重新实现故障安全逻辑检查这些变量是否存在。