我正在尝试使用删除操作删除。但每当我点击链接时,我只会转到用户个人资料。
用户控制器
class UsersController < ApplicationController
filter_resource_access
# GET /users
# GET /users.xml
def index
@users = User.all
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @users }
end
end
# GET /users/1
# GET /users/1.xml
def show
#@user = User.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @user }
end
end
# GET /users/new
# GET /users/new.xml
def new
#@user = User.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @user }
end
end
# GET /users/1/edit
def edit
#@user = User.find(params[:id])
end
def create
#@user = User.new(params[:user])
@user.channels << Channel.find(1)
respond_to do |format|
if @user.save
format.html { redirect_to(:channels, :notice => 'Registration successfully.') }
format.xml { render :xml => @user, :status => :created, :location => @user }
else
format.html { render :action => "new" }
format.xml { render :xml => @user.errors, :status => :unprocessable_entity }
end
end
end
def profile
@user = User.find(params[:id])
end
# PUT /users/1
# PUT /users/1.xml
def update
#@user = current_user
respond_to do |format|
if @user.update_attributes(params[:user])
format.html { redirect_to(@user, :notice => 'User was successfully updated.') }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @user.errors, :status => :unprocessable_entity }
end
end
end
# DELETE /users/1
# DELETE /users/1.xml
def destroy
@user = User.find(params[:id])
@user.destroy
respond_to do |format|
format.html { redirect_to(users_url) }
format.xml { head :ok }
end
end
def delete
@user = User.find(params[:user_id])
@user.destroy
redirect_to :users
end
end
索引用户视图
<h1>Listing users</h1>
<p id="notice"><%= notice %></p>
<table>
<tr>
<th>Username</th>
<th>First Name</th>
<th>Last Name</th>
<th>Telephone</th>
<th>Email</th>
<th></th>
<th></th>
<th></th>
</tr>
<% @users.each do |user| %>
<tr>
<td><%= user.login %></td>
<td><%= user.first_name %></td>
<td><%= user.last_name %></td>
<td><%= telephone_field_tag :phone, user.telephone ,:disabled => true %></td>
<td><%= email_field_tag :email, user.email, :disabled => true %></td>
<td><%= link_to 'View Profile', user %></td>
<td><%= link_to 'Edit Profile', edit_user_path(user) if permitted_to? :update ,user %></td>
<%if permitted_to? :delete ,user %>
<td><%= link_to 'Close Account', user, :method => :delete, :confirm => "Are you sure?" %></td>
<% end %>
</tr>
<% end %>
</table>
<br />
<%= link_to 'New User', new_user_path %>
答案 0 :(得分:5)
你使用Rails 3的机会很好,对吧?这是一个常见问题。在rails 2.x中,link_to
帮助程序用于创建凌乱的内联javascript,以创建使用相应的delete
调用提交的表单(有点,但对于此解释已经足够了)。
然而,在Rails 3中,实际执行此操作的javascript已被移出视图本身,转换为javascript文件。这被称为“不引人注目的”javascript,其中HTML源代码严格用于文档结构,文档行为存在于其他地方。
底线是您的布局需要在<head>
部分中包含这些文件,如下所示:
<%= javascript_include_tag :all %>
这应该可以解决您的问题。
答案 1 :(得分:1)
如果你使用Rails 3:旧的link_to删除东西不像以前那样工作。
现在都是UJS。我确保你要包含所有的javascript好东西,无论是基于默认原型的东西,还是使用jquery ones,如果这更符合你的风格。
另外,请确保布局中包含csrf_meta_tag
。 more...
答案 2 :(得分:1)
如果您尝试使用Rails 3执行此操作,则应该read this SO question。
如果您尝试使用Rails 2执行此操作,某些日志可以帮助我们。