2012-07-27 22 views
0

所以我想知道如何使用Rails 3中的link_to方法和ajax,當重寫不同的partials時。如何使用ajax時顯示不同的部分 - Rails 3

例子:

讓說我有兩個鏈接show.html.erb和每一個環節有一個部分來呈現。

<li><%= link_to "Group1", user_path(@user), { :action => 'group1' , :method => :get, :remote => true} %></li> 
<li><%= link_to "Group2", user_path(@user), { :action => 'group2' , :method => :get, :remote => true} %></li> 

而且我們要呈現在這個div諧音:

<div id="profile-data"> 
...render here... 
</div> 

UsersController,我們有我們的每個部分調用方法:

def group1 
    respond_to do |format| 
    format.js 
    end 
end 
def group2 
    respond_to do |format| 
    format.js 
    end 
end 

當然,我們有我們的js文件在視圖用戶文件夾中:

group1.j s.erb

$("#profile-data").html("<%= escape_javascript(render(:partial => 'group1')) %>"); 

group2.js.erb

$("#profile-data").html("<%= escape_javascript(render(:partial => 'group2')) %>"); 

所以我的問題是: 這是渲染阿賈克斯不同的諧音的正確方法?我錯過了什麼嗎?必須以某種方式路由它們嗎?

此代碼dosent現在工作,我不知道爲什麼,任何幫助將不勝感激。

+0

這是在軌使用AJAX的正確方式,究竟是什麼心不是工作?我沒有看到任何數據被髮送或返回。另外,添加一個更好的jQuery選擇器$(「#profile-data」) – 2012-07-27 20:56:29

+0

@KyleC,謝謝我定義了一個更好的jquery選擇器,它將我指向根索引頁.. – SHUMAcupcake 2012-07-27 23:16:42

回答

0

您需要明確聲明您要在您的link_to中發出JavaScript請求。 這可以通過將選項哈希中的格式設置爲js來完成::format => :js

所以你的情況應該是這樣的:

<li><%= link_to "Group1", user_path(@user), { :action => 'group1' , :method => :get, :remote => true, :format => :js} %></li> 
<li><%= link_to "Group2", user_path(@user), { :action => 'group2' , :method => :get, :remote => true, :format => :js} %></li> 
+0

我不認爲這是真的。在rails 3中,當你添加:remote => true時,它會爲標籤添加一個data-remote屬性,然後rails-ujs爲你完成剩下的工作,因此不需要:format =>:js 。 – Teddy 2012-07-27 21:48:10

+0

@格雷 - 它將我重定向到根索引.. – SHUMAcupcake 2012-07-27 23:15:45

0

的的link_to應該是有點像

<%= link_to "Group1", {group1_users_path, :format => :js} , :method => :get, :remote => true %> 

<%= link_to "Group1", {:controller=>:users,:action=>:group1, :format => :js} , :method => :get, :remote => true %> 

,或者如果它是一個成員的路線和需要user_id

<%= link_to "Group1", {group1_users_path(@user) :format => :js} , :method => :get, :remote => true %> 

link_to的第二個參數是url選項,所以只有與url有關的選項進入它,其他人應該不在散列中,否則它們只會作爲params傳遞。在軌卵母細胞

簽出更多的細節,他們有一些巧妙的文檔和例子

http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to

您必須路線1組和第2組文件

應該像

resourses :users do 
    collection do 
    get "group1" 
    get "group2" 
    end 
end 

這將添加助手group1_user_path和group2_user_path

我recemmond你要經過徹底軌文檔

http://guides.rubyonrails.org/routing.html#adding-more-restful-actions

+0

你的例子dosent爲我工作,認爲它與我沒有爲它定義任何路線..你能告訴我一些如何定義一條路線例2。 – SHUMAcupcake 2012-07-27 23:14:09