0

Rails 4.2 と Draper gem を使用します。私はデコレータを持っています:

  def status_link
    if enabled?
      h.link_to 'Disable', h.disable_company_path(id), data: {confirm: 'Are you sure?'}, method: :put, remote: true
    else
      h.link_to 'Enable', h.enable_company_path(id), method: :put, remote: true
    end
  end

リンクをjsビューでレンダリングしたい:

var cell = $("#my-id");
cell.html(<%= @my_model.decorate.status_link %>);

しかし、リンクはセルに注入されません。セルが空です。

コンソールでstatus_linkメソッドを印刷すると、次のように機能します。

<%= pp  @my_model.decorate.status_link %>
"<a data-confirm=\"Are you sure?\" data-remote=\"true\" rel=\"nofollow\" data-method=\"put\" href=\"/companies/210/disable\">Disable</a>"

整数を注入しようとすると、次のように機能します。

cell.html(<%= @my_model.id %>);

また、二重引用符を使用しようとしました:

cell.html("<%= @my_model.decorate.status_link %>");

しかし、結果は同じです。ブラウザ コンソールでコードを検査しようとしましたが、エラーは表示されません

整数が正常に機能しているのにリンクが挿入されないのはなぜですか?

4

1 に答える 1

1

以下は無効です。

cell.html(<%= @my_model.decorate.status_link %>);

文字列を使用して JavaScript 関数を呼び出す必要があります。

cell.html("<%= @my_model.decorate.status_link %>");

ここでのポイントは、この特定のエラーを記憶することではなく、コードのデバッグ方法を学ぶことです。

アプリケーションの関連ページに移動し、ブラウザー コンソールを開きます。ページの更新やボタンのクリックなど、その JavaScript をトリガーするアクションを実行します。ログにエラーが表示されます。このようなもの:

コンソール エラー

これには、エラーが発生したコード行へのリンクも含まれます。つまり、あなたの場合はcell.html(<%=....コードです。

于 2016-09-08T10:24:36.677 に答える