2013-03-28 60 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)我创建关于如何登场? –

相关问题