我的设置:Rails 3.0.9,Ruby 1.9.2,jQuery 1.6.2
我有一个表单,可以为用户显示多张照片和评论,我希望实现内嵌评论。
<div id="newsfeed"> <div> <div class="photo_title">Summer 2011</div> <div class="newsfeed_photo"> <a href="..." /></a> </div> <textarea class="comment_box">Write a comment...</textarea> </div> <div> <div class="comment_title">Seeing a movie</div> <textarea class="comment_box">Write a comment...</textarea> </div>
我想在用户点击textarea字段中的enter键后提交AJAX帖子。这是到目前为止我拥有的javascript(不完整)
$('#newsfeed').delegate('.comment_box', 'keydown', function (event){ event.preventDefault(); $.post('/sub_comments', ...); });
我使用该delegate方法是因为<div id='newsfeed'>可以将内容替换为另一个AJAX调用。我需要的是jQuery post方法的语法,假设我需要传递诸如say photo_id等的表单参数。假定我有一种方法可以访问参数的值,那么post调用Rails期望的创建参数的语法是什么?
delegate
<div id='newsfeed'>
post
photo_id
这是标准的Rails位
sub_comments_controller.rb def new @sub_comment = SubComment.new respond_to do |format| format.html # new.html.erb format.js end end
另外,我也不想对<%= form_for(@sub_comment, :remote => true) do |f| %>我可以添加的每个内联注释都使用常规方法。我也看过Ryan Bates的railscast,但是代码看起来已经过时了。
<%= form_for(@sub_comment, :remote => true) do |f| %>
您可以设置您的帖子以任何方式构造数据,只要它能在导轨末端正确解释即可,但是最佳实践是使用一个带有所有值的“模型名称”对象。
Java脚本
$.ajax({ url: "/sub_comments", type: "POST", data: {subcomment: { field: val, field2: val, etc... }}, success: function(resp){ } });
滑轨
def create @sub_comment = SubComment.new params['subcomment'] if @sub_comment.save render :json => { } # send back any data if necessary else render :json => { }, :status => 500 end end