2013-03-28 87 views
1

我正在創建一個簡單的Rails應用程序,作爲我的項目的基本應用程序,並且在用戶編輯配置文件頁面中,我無法通過異步請求加載部分應用程序。爲什麼我的部分請求,使用:remote不起作用?

這裏是一個編輯的個人資料頁我的基本視圖:

應用程序/視圖/用戶/ edit.html.haml

container-fluid 
    .row-fluid 
    .span3 
     .well 
     %ul.nav.nav-pills.nav-stacked 
      %li.nav-header Profile 
      %li 
      = link_to 'Personal Infos', 'settings', remote: true 

我的設置在控制器上操作:

app/controllers/users_controller.erb

... 

def settings 
    @user = User.find(params[:id]) 
    respond_to do |format| 
    format.js 
    end 
end 

... 

應用程序/視圖/用戶/ settings.js.erb

$('div#settings_body').html("<%= escape_javascript(render('edit_profile'))%>") 

最後,我的部分:

應用程序/視圖/用戶/ _edit_profile.html.haml

= form_for(@user) do |f| 
    = f.text_field :email 
    = f.submit "Save" 

但是,當我點擊鏈接「個人信息」沒有任何反應。我究竟做錯了什麼?

回答

0

我在這個問題上掙扎了三天,並且 - 不問我爲什麼 - 我從鏈接中刪除了remote: true命令,看看會發生什麼。當我點擊鏈接時,我的應用程序被捕獲並授權問題。

我使用康康舞在此應用程序處理授權,那是我的能力文件:

應用程序/模型/ ability.rb

class Ability 
    include CanCan::Ability 

    def initialize(resource) 
    if resource.is_a?(User) 
    can [:read, :edit], User, :id => resource.id 
    end 
    end 

end 

的問題是,我添加了一個新的操作設置到用戶控制器,CanCan阻止控制器運行此操作,並且部分未被加載。

我改變了我的能力,文件內容如下:

應用程序/模型/ ability.rb

class Ability 
    include CanCan::Ability 

    def initialize(resource) 
    if resource.is_a?(User) 
    can [:read, :edit, :settings], User, :id => resource.id 
    end 
    end 

end 

和它的工作。

+0

您可以試着用例如螢火蟲,這可能會節省您一些時間;) – pduersteler

+0

太棒了!你能回答在[這個問題](http://stackoverflow.com/questions/15682883/my-partial-wasnt-loading-because-of-cancan-authorization-how-can-i-debug-that)我創建關於如何登場? –

相關問題