0

Ajaxとレールには少し新しい。

画像にリンクがあり、クリックすると画像が置き換えられます。

ビュー内の私のリンクは次のとおりです。

<div id="flag_<%= message.id %>">
  <%= link_to image_tag("white_star.png"), flag_message_path(message), remote: true %>
</div>

これは、メッセージコントローラのflagメソッドを呼び出します。format.jsの場合、flag.jsがあります。

{$('#flag_<%=@message.id%>').html('<% if @message.flag == false %><a href="/messages/96/flag" data-remote="true"><img alt="White_star" src="/assets/white_star.png" title="flag"></a>
    <% else %>
    <a href="/messages/96/flag" data-remote="true"><img alt="Red_star" src="/assets/red_star.png" title="flag"></a>
    <% end %>');
}

これはブラウザに戻ります:

{
$('#flag_94').html('<a href="/messages/96/flag" data-remote="true"><img alt="White_star" src="/assets/white_star.png" title="flag"></a>
');
}

それは私には大丈夫のようですが、それでも何も起こりません....何か考えはありますか?ありがとう

4

1 に答える 1

1

すべてが大丈夫のようですが、私はあなたの周りの称賛を落としますformat.js.erb。それらは必要ありません。

javascriptにエラーがある場合は、javascriptコンソールに表示されます。

一般に、このようなコードをパーシャルに抽出することをお勧めします。

だからあなたはreplace_image.html.erb

<% if @message.flag == false %>
  <a href="/messages/96/flag" data-remote="true"><img alt="White_star" src="/assets/white_star.png" title="flag"></a>
<% else %>
  <a href="/messages/96/flag" data-remote="true"><img alt="Red_star" src="/assets/red_star.png" title="flag"></a>
<% end %>

そしてあなたの中でformat.js.erbあなたはただするでしょう

$('#flag_<%=@message.id%>').html("<%= escape_javascript(render :partial => 'replace_image') %>");

お役に立てれば。

于 2012-12-16T15:11:15.753 に答える