我正在创建一个简单的Rails应用程序,作为我的项目的基础应用程序,在用户编辑配置文件页面中,我无法通过异步请求加载部分。
以下是编辑个人资料页面的基本视图:
应用/视图/用户/ 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
我在控制器上的设置操作:
应用/控制器/ 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 :(得分:0)
我在这个问题上挣扎了三天 - 并且不要问我原因 - 我从链接中删除了remote: true
命令以查看会发生什么。当我点击链接然后,我的应用程序被捕获并且授权问题。
我正在使用CanCan处理此应用中的授权,这是我的能力文件:
应用/模型/ 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
问题是我向用户控制器添加了一个新操作 settings ,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
它有效。