2014-10-30 67 views
0

我有一個簡單的帖子頁面,用戶可以在其中創建一個新帖子 - 表單是ajax(我正在使用turbolinks)。Rails ajax成功更新UI

  • 什麼是Rails的一次阿賈克斯成功更新UI的方式

在我看來這裏是我的選擇:

  1. 重新加載使用JavaScript當AJAX頁面:成功火災

  2. 在Rails的控制器,返回新崗位作爲JSON。然後在阿賈克斯:成功我需要以某種方式創建一個模板

e.g:

$("<div id='new-post'>").html(ajaxResult) 
code to append the div to my posts 
  • 這是或多或少地做到這一點? (我不打算在這裏使用餘燼或角)
  • 任何理由更喜歡第一個或第二個選項?
+0

選項2,通過 – Debadatt 2014-10-30 08:49:49

+0

人們是否會使用handlebars.js鋼軌更新像這樣的東西,或只有當它是一個非常複雜的用戶界面? – 2014-10-30 08:51:24

+0

爲你的目的把手是矯枉過正的:) – 2014-10-30 08:59:00

回答

1

您可以選擇選項2被作爲JS發送新並將其添加到div模板使用Rails

例如:

_form.html.erb

<%= form_for(@model), :html => {remote: true} do |f| %> 
     your input fields code here 

<% end %> 

控制器。

def create 
    respond_to do |format| 
    if @model.save 
     format.js 
    else 
     render 'new' 
    end 
    end 

create.js.erb

$("#get_input").html(<%= j ({render :partial => "create"})%>) **#get_input is your div id** 

_create.html.erb

#write your template code here 
+0

啊我喜歡,我可以用這種方式使用我的partials,並且我不需要在javascript中創建html,如果我理解正確 – 2014-10-30 09:34:09

+0

@Joel_Blum顯示部分來自ajax的數據需要附加到一些html元素。 – anusha 2014-10-30 10:06:34

+0

是的,所以剩下的就是添加append代碼到create.js.erb。如果你不需要任何幻想,我認爲它是一個合理的解決方案 – 2014-10-30 10:52:02

0

也有很多方法的,你可以做到這一點:)

對於離。您可以發送不JSON但JS要求

def some_action 
    respond_to do |format| 
    format.html 
    format.js 
    end 
end 

然後在/views/../some_action.js.erb

$("<div id='new-post'>").html("<%=j({render here what you want}>") 

或者你可以辦理真的JSON。然後,你需要使用不便像https://github.com/netzpirat/haml_coffee_assets模板系統,輕鬆地創建基於你JSON

JS模板