2016-07-07 2 views
0

以内に、私はジャバスクリプト、HTML、およびHAMLに非常に新しいですので、答えはあなたのいくつかのために痛いほどうまくいけば明らかであるは、これらの言語の私の理解不足のために私を許して... HAMLスクリプト

をJavaScript関数を呼び出します。

私は、if文の中でjavascript関数を呼び出そうとしています(スクリプト全体がhamlで書かれています)。真であると評価されると、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; 
    } 
    } 
+0

[HAMLのインラインJSを含める](http://stackoverflow.com/questions/9744169/include-inline-js-in-haml) – imtheman

答えて

0

サーバー側とクライアント側の実行が混在しています。あなたは、あなたのjavascript check_valid(クライアント側)をRails(サーバー側)から呼び出そうとしています。それは動作しません。

学習の練習と同じように、ビジネスロジックをRailsヘルパーで再実装して、実行しているように正確にコーディングでき、そのJavaScriptを取り除くことができます。

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

は、そして悪い設計され、完全にすべてのそのコードをリファクタリングを検討し、これらの変数のためにあなたのフェイルセーフロジックチェックの存在を再実装、あなたのコントローラ内のインスタンスRubyの変数にそれらのrequestermy_expertをロードします。

+1

ありがとう!私はこのすべてに非常に新しいので、このヒントは物事を一緒にする方法を学ぶだけで非常に役立ちます... – BenjiRoo

関連する問題