无法删除记录,用户

时间:2010-12-09 04:03:43

标签: ruby-on-rails activerecord ruby-on-rails-3 authlogic

我正在尝试使用删除操作删除。但每当我点击链接时,我只会转到用户个人资料。

用户控制器

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 %>

3 个答案:

答案 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_tagmore...

答案 2 :(得分:1)

如果您尝试使用Rails 3执行此操作,则应该read this SO question

如果您尝试使用Rails 2执行此操作,某些日志可以帮助我们。