在haml脚本中调用javascript函数

时间:2016-07-07 20:59:21

标签: javascript html haml

我是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;
    }
  }

1 个答案:

答案 0 :(得分: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变量中,重新实现故障安全逻辑检查这些变量的存在。