- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Ruby on Rails 的新手,使用的是 rails 3.2.13 和 ruby 1.9.3p392。我正在尝试构建一个供应用程序使用的引擎,这可能会导致我感到困惑。
引擎名称是 sales_app。我有一个页面将一堆数据发布到 sales_app/sales#create 以创建销售。在销售 Controller 的创建操作中,我做了一些数据处理并尝试实例化一个 Sale 对象。我没有从模型中创建对象,而是得到了删除方法的 NoMethodError 异常,我什至不知道我在调用。请帮忙。
这里是相关的细节。我的销售/新页面将以下参数发布到 sales#create:
{"sale"=>{"name"=>"Test",
"desc"=>"This is a test",
"start_date"=>"05/30/2013",
"end_date"=>"05/31/2013",
"start_time"=>"07:00",
"end_time"=>"08:00",
"products"=>""},
"create"=>"Create Sale"}
Sales Controller 的创建操作如下:
def create
if params[:create] == "Create Sale"
# process the data - add a start and end to params
#format = "%m/%d/%Y %H:%M:%S"
params[:sale][:start] = DateTime.strptime("#{params[:sale][:start_date]} #{params[:sale][:start_time]}:00", '%m/%d/%Y %H:%M:%S')
params[:sale][:end] = DateTime.strptime("#{params[:sale][:end_date]} #{params[:sale][:end_time]}:00", '%m/%d/%Y %H:%M:%S')
@sale = Sale.new(:name => params[:sale][:name], :desc => params[:sale][:desc], :start => params[:sale][:start], :end => params[:sale][:end])
if @sale.save
redirect_to @sale
else
render 'new'
end
else
render '/sales_app/static_pages/home'
end
end
日期内容旨在将日期和时间转换为单个日期时间,我认为这是可行的。 Sale 模型本身如下所示(我什至不确定为什么其中一些是这样的):
module SalesApp
class Sale < ActiveRecord::Base
attr_accessible :desc, :end, :name, :start
def initialize(attributes = {})
@name = attributes[:name]
@desc = attributes[:desc]
@start = attributes[:start]
@end = attributes[:end]
end
validates :name, presence: true, length: { maximum: 255 }
validates :desc, presence: true, length: { maximum: 65536 }
validates :start, presence: true
validates :end, presence: true
end
end
我已经生成了我的模型并且我做了一个 rake db:migrate。我的架构如下所示:
ActiveRecord::Schema.define(:version => 20130527160623) do
create_table "sales", :force => true do |t|
t.string "name"
t.text "desc"
t.datetime "start"
t.datetime "end"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
end
模式文件在主应用程序中,但销售模型文件在引擎中。呃。
所以我可能有很多地方可以做得更好。但是,具体来说,我想知道为什么我不能创建一个 Sale 对象,或者我可能需要做些什么来创建一个对象,或者至少为什么在我不知道为什么的情况下调用了某种未定义的删除方法。任何帮助将不胜感激。谢谢!
EDIT Rake Routes 显示以下内容:
sales_app_static_pages_home GET /sales_app/static_pages/home(.:format) sales_app/static_pages#home
sales_app_static_pages_help GET /sales_app/static_pages/help(.:format) sales_app/static_pages#help
sales_app_sales GET /sales_app/sales(.:format) sales_app/sales#index
POST /sales_app/sales(.:format) sales_app/sales#create
new_sales_app_sale GET /sales_app/sales/new(.:format) sales_app/sales#new
edit_sales_app_sale GET /sales_app/sales/:id/edit(.:format) sales_app/sales#edit
sales_app_sale GET /sales_app/sales/:id(.:format) sales_app/sales#show
PUT /sales_app/sales/:id(.:format) sales_app/sales#update
DELETE /sales_app/sales/:id(.:format) sales_app/sales#destroy
sales_app_root /sales_app(.:format) sales_app/static_pages#home
最佳答案
我知道这是一个相当古老的问题,这个答案并没有直接回答原始帖子,但如果其他人偶然发现“未定义的方法删除”错误并想知道发生了什么,它可能与您的方法名称。
具体来说,“initialize”方法似乎在 Rails 中保留,就像在 Ruby 中一样。因此,如果您正在制作一种旨在将一些数据插入您的模型之一的方法(例如 before_validation :initialize),您将收到未定义方法删除错误。将该方法命名为其他名称(例如 before_validation :init_my_model),错误就会消失。
@Deranger 我怀疑是初始化方法把事情搞砸了。
关于ruby-on-rails - Ruby on Rails 引擎未定义方法 'delete' 为 nil :NilClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16823385/
我想了解 Ruby 方法 methods() 是如何工作的。 我尝试使用“ruby 方法”在 Google 上搜索,但这不是我需要的。 我也看过 ruby-doc.org,但我没有找到这种方法。
Test 方法 对指定的字符串执行一个正则表达式搜索,并返回一个 Boolean 值指示是否找到匹配的模式。 object.Test(string) 参数 object 必选项。总是一个
Replace 方法 替换在正则表达式查找中找到的文本。 object.Replace(string1, string2) 参数 object 必选项。总是一个 RegExp 对象的名称。
Raise 方法 生成运行时错误 object.Raise(number, source, description, helpfile, helpcontext) 参数 object 应为
Execute 方法 对指定的字符串执行正则表达式搜索。 object.Execute(string) 参数 object 必选项。总是一个 RegExp 对象的名称。 string
Clear 方法 清除 Err 对象的所有属性设置。 object.Clear object 应为 Err 对象的名称。 说明 在错误处理后,使用 Clear 显式地清除 Err 对象。此
CopyFile 方法 将一个或多个文件从某位置复制到另一位置。 object.CopyFile source, destination[, overwrite] 参数 object 必选
Copy 方法 将指定的文件或文件夹从某位置复制到另一位置。 object.Copy destination[, overwrite] 参数 object 必选项。应为 File 或 F
Close 方法 关闭打开的 TextStream 文件。 object.Close object 应为 TextStream 对象的名称。 说明 下面例子举例说明如何使用 Close 方
BuildPath 方法 向现有路径后添加名称。 object.BuildPath(path, name) 参数 object 必选项。应为 FileSystemObject 对象的名称
GetFolder 方法 返回与指定的路径中某文件夹相应的 Folder 对象。 object.GetFolder(folderspec) 参数 object 必选项。应为 FileSy
GetFileName 方法 返回指定路径(不是指定驱动器路径部分)的最后一个文件或文件夹。 object.GetFileName(pathspec) 参数 object 必选项。应为
GetFile 方法 返回与指定路径中某文件相应的 File 对象。 object.GetFile(filespec) 参数 object 必选项。应为 FileSystemObject
GetExtensionName 方法 返回字符串,该字符串包含路径最后一个组成部分的扩展名。 object.GetExtensionName(path) 参数 object 必选项。应
GetDriveName 方法 返回包含指定路径中驱动器名的字符串。 object.GetDriveName(path) 参数 object 必选项。应为 FileSystemObjec
GetDrive 方法 返回与指定的路径中驱动器相对应的 Drive 对象。 object.GetDrive drivespec 参数 object 必选项。应为 FileSystemO
GetBaseName 方法 返回字符串,其中包含文件的基本名 (不带扩展名), 或者提供的路径说明中的文件夹。 object.GetBaseName(path) 参数 object 必
GetAbsolutePathName 方法 从提供的指定路径中返回完整且含义明确的路径。 object.GetAbsolutePathName(pathspec) 参数 object
FolderExists 方法 如果指定的文件夹存在,则返回 True;否则返回 False。 object.FolderExists(folderspec) 参数 object 必选项
FileExists 方法 如果指定的文件存在返回 True;否则返回 False。 object.FileExists(filespec) 参数 object 必选项。应为 FileS
我是一名优秀的程序员,十分优秀!