使用jquery时如何识别循环中的哈希元素

时间:2014-01-28 16:48:03

标签: jquery ruby-on-rails ruby ajax

我有以下哈希(@messages),这些哈希是发件人/来自:

的邮件
{'Tom'=>[#<ShortMessage id: 16, content: "ABC", created_at: "2014-01-28 16:35:33", from: 'Tom'>, #<ShortMessage id: 15, content: "DEF", created_at: "2014-01-28 13:11:20", from: 'Tom'>], 'Jerry'=>[#<ShortMessage id: 5, content: "XYZ", created_at: "2014-01-22 09:48:52", from: 'Jerry'>]}

在我看来,我遍历哈希以打印出发件人名称及其邮件组。我还为每组消息提供了一个表单,用户可以在该表单中回复该特定发件人

<% @messages.each do |sender, message| %>
 <p><%= sender %></p>
 <% message.each do |msg| %>
  <p><%= msg.content %></p>
 <% end %>
// reply form
 <%= form_for @message, remote: true do |f| %>
  <%= f.hidden_field :from, value: from %>
  <%= f.text_field :content %>
  <%= f.submit "Reply" %>
 <% end %>
<% end %>

我正在使用ajax和jquery提交表单并将新的回复文本添加到邮件组的末尾,以便每次发送回复时都不必刷新页面

如何在循环哈希时引用哪一组消息附加新回复?

示例如果我想回复Tom并填写他的回复表格我如何附加到该组消息而不是Jerry's?

我不成功的jquery看起来像这样:

<script>
 $('#container').on('ajax:success', function(event, data){
 if (data.succ) {
  // handle your success somehow, like show a new field
 } else { 
  // something went wrong
 }
})
</script>

1 个答案:

答案 0 :(得分:1)

我可能会将ajax:success绑定到表单本身而不是#container(这不在btw的问题中)。然后t就像

一样简单
$(this).before(...)