-1

当单击“查看对话”时,以下 javascript 会显示隐藏的视图代码。当单击“查看对话”并显示对话时,我想将对话中最后一条消息的状态从“未读”更新为“已读”。不过,我无法嵌入此 Ruby 代码以在点击时触发。作为测试,我能够在单击“查看对话”时弹出一个 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

您需要使用 Ajax 从 Javascript 触发 Ruby 代码。您不能在 Javascript 中“嵌入”Ruby 代码。您需要了解客户端脚本和服务器端脚本之间的区别。

例如阅读:http ://answers.yahoo.com/question/index?qid=20080529114633AAHE4DE

在您理解了这些概念之后,解决方案应该是显而易见的。

于 2012-11-13T15:14:00.913 回答