删除操作并为Rails版本2.3.2创建操作

时间:2015-10-02 07:43:05

标签: ruby-on-rails-3

刚才我开始研究Ruby on Rails。

ruby version=1.8.7
rails version =2.3.2

我创建了删除并创建了新的用户操作,但是出现了一些错误, 错误是:

    uninitialized constant User::Id
    Extracted source (around line #19):

 16:         <td><%= user.fname %></td>
 17:         <td><%= user.lname %></td>
 18:         <td><%= user.dob %></td>
 19:         <td><%= button_to "delete", :url => {:controller => :users,:action => 'destroy',:id =>user.id}, :method => :delete %></td>
 20:       </tr>
 21:     <% end %>
 22: </table>

我的MySQL数据库表是:

id  fname  lname   dob
 1  kamal   vimal  2012.02.12
 2  rahu    sharmi 2012.05.26
 3  mithun  kavi   2012.03.07

班级用户:

class User < ActiveRecord::Base

set_primary_key :id
has_one :id
end

我的控制器是:

class UsersController < ApplicationController

def index
@users=User.all
end

def destroy
    # User.primary_key='id'
    @users=User.find(:id)
    @users.destroy
    flash[:notice] = "You have successfully Delete Recode"
end

def new
    @users=User.new
end

 def create
    @users=User.new(params[:users])
    if @user.save
        redirect_to_users_path
        flash[:notice] = "Your record is created!"
    else
        render :action => "index"
    end
 end
end

我的观点是:

 <% @users.each do |user| %>

 <%= button_to "delete", :url => {:controller => :users,:action => 'destroy',:id =>user.id}, :method => :delete %>
 <% end %>

任何人都可以帮助我?

1 个答案:

答案 0 :(得分:0)

我看到了一些误解。

用户控制器

如果查看控制器中的删除方法

def destroy
  @users=User.find(:id)
  [...]

您正在将符号传递给find功能,而不是删除请求中的ID。您可以使用 params [:id] 来获取ID,就像使用create function一样。

def destroy
  @users=User.find(params[:id])
  [...]

以下只是建议。

我还会在此处以及new和create方法中将实例变量名称从 @users 更改为 @user ,因为您正在获取/构建单个用户

如果您的routes.rb设置为

ActionController::Routing::Routes.draw do |map|
  map.resources :users
end

您无需在 button_to 帮助器中指定指定控制器和操作的网址,但您可以使用路径帮助

button_to "delete", user_path(user), :method => :delete

用户模型

您可以删除这两个语句。

只有当表中的主键与默认的“id”不同时,才应使用 set_primary_key

该关联被滥用。

使用has_one方法告诉Rails 用户模型模型'id'通过 1:1关系<相关< / strong>,我想,这不是你想要的。

最后的想法

如果不这样做,请仔细阅读Ruby on Rails guide,这是一个很好的起点。

此外,您正在使用真正旧版本的Rails和Ruby,这些版本不再受支持。如果没有任何具体原因,比如在遗留项目上工作,我建议你在ruby 2.2上学习像Rails 4这样的更新版本。