我的设置: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',...); });
我正在使用委托方法,因为< div id ='newsFeed'>内容可以替换为另一个AJAX调用.我需要的是jQuery post方法的语法,假设我需要传递一些表单参数,比如说photo_id等.假设我有一种方法来访问params的值,那么用于创建参数的post调用的语法是什么Rails期待他们
这是标准的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 | %GT;对于每一个可以添加的内联评论.我也看了Ryan Bates的railscast,但代码看起来已经过时了.
解决方法
只要在轨道端正确解释,您可以以任何方式设置您的帖子来构建数据,但最佳做法是具有包含所有值的“model-name”对象.
使用Javascript
$.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