点击“查看对话”时,以下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;
});
答案 0 :(得分:1)
您需要使用Ajax从Javascript触发Ruby代码。你不能在Javascript中“嵌入”Ruby代码。 您需要了解客户端脚本和服务器端脚本之间的区别。
例如:http://answers.yahoo.com/question/index?qid=20080529114633AAHE4DE
在理解了这个概念后,解决方案应该是显而易见的。