2012-01-10 74 views
1

我想添加一些AJAX功能到我的Rails应用程序,但不知道从哪里开始。AJAX与Rails 3

这里是增加了一个项目给订单的方法:

def add_item_to_order 
if session[:order_id].nil? 
    @order = Order.new #Don't create an order until there is an item to be added to it. 
    @order.account_id = session[:user_id] 
else 
    @order = Order.find(session[:order_id]) 
end 
item = Item.find(params[:id]) 
o_item = OrderItem.new 
o_item.item_id = item.id 
@order.order_items << o_item 
@order.total += item.sale_price 
@order.save 
session[:order_id] = @order.id 
redirect_to order_home_path 
end 

这是运行在用户点击:

<%= link_to item.name, add_item_to_order_path(item.id), :class => "fixed medium green button"%> 

谁能给我如何开始任何提示,所以该项目通过AJAX添加到订单中?

回答

1

伟大的教程,自己做了这个:http://ruby.railstutorial.org/ruby-on-rails-tutorial-book第12章在Ajax上有一些东西。

重要组成部分,是设置的link_to paramater data-remotetrue

<%= link_to item.name, add_item_to_order_path(item.id), 
    :class => "fixed medium green button" data-remote="true" method="post"%> 

并在控制器添加

def add_item_to_order 
    # other stuff 
    # at the bottom: 
    respond_to do |format| 
      format.html { redirect_to order_home_path } 
      format.js 
     end 

end 

然后你需要一个.js.erb文件来处理format.js repsonse:

$("your_form").update("<%= escape_javascript(render('partial_page')) %>") 

和部分页面文件以保存新的数据..

+0

在.js.erb文件中,什么将代替“your_form”?按钮的类? – 2012-01-10 12:34:53

+0

“your_form”是您在主html文件中使用的div的ID,用于显示您希望由ajax请求更新的信息。可能是您希望更改文字的按钮或显示新信息的标签.. – Pete 2012-01-10 12:40:55

+0

您提供的链接仅由11个章节组成:P – 2014-06-24 07:15:07

2
  1. 检查如何render javascript。在正常的请求中,您可以重定向到某个动作或者渲染一些视图等,对于XHRXmlHttpRequest),您可以通过将呈现的服务器端js模板来使用render javascript。您将不得不使用为Rails-3提供的LegacyPrototypeHelpers,因为最初的帮助器只能正式用于Rails-2。

  2. 更好的方法(不像Rails 3那样引人注目)只会从服务器发送一些数据。在下面的例子中,你有上面我猜如果你通过JSON对象或其他格式发送item.id,然后在成功回调的地方读取它,从你做出XMLHttpRequest的地方,然后获得item.id后,你可以创建link_to创建的HTML,然后将其附加到DOM。