-1

次の JavaScript は、[View Conversation] をクリックすると非表示のビュー コードを表示します。「会話を表示」をクリックして会話が表示されたら、会話の最後のメッセージの状態を「未読」から「既読」に更新したいと考えています。ただし、クリック時にトリガーするようにこの Ruby コードを埋め込むのに問題があります。テストとして、「View Conversation」をクリックするとポップアップする JavaScript アラートを取得できたので、最後のメッセージの状態を更新するためのコードを挿入するのに適切な場所だと思います。しかし、テスト アラート メッセージに表示されているものと一致する結果が得られません。ご意見をお待ちしております。ありがとう。

$('#inbox .btn-view-conversation').toggle(function(){
    $(this).text('Hide Conversation');
    $(this).parents('.row-message').find('.message-conversation').slideDown();

    // alert('message!') triggers on click correctly
    $(this).click(alert('message!'));

    // the code below sometimes triggers when the page loads (before click), 
    // but sometimes not at all. 
    $(this).click('<% Message.last.update_attributes(:state => 'read') %>')

    return false;
  }, function(){
    $(this).text('View Conversation');
    $(this).parents('.row-message').find('.message-conversation').slideUp();
    return false;
  });
4

1 に答える 1

1

Javascript から Ruby コードをトリガーするには、Ajax を使用する必要があります。Ruby コードを Javascript に「埋め込む」ことはできません。クライアント側スクリプトとサーバー側スクリプトの違いを理解する必要があります。

たとえば、http: //answers.yahoo.com/question/index?qid=20080529114633AAHE4DEを読んでください。

この概念を理解すれば、解決策が明らかになるはずです。

于 2012-11-13T15:14:00.913 に答える