[英]Rails 3.2.13 active_admin undefined local variable or method
[英]Ruby on Rails - Undefined Method - Rails 3.2.13
不幸的是,我们的Ruby Developer不在城里,我们遇到了一个问题,需要解决此问题,直到他回来。 我受命去寻找它。
我正在尝试访问我们的数据库视图之一hr_accounts_view,其中包含我们需要合并到现有页面(依赖于完全不同的表)中的必要数据。 我们试图引入的只是视图中的“ 状态”列,因此,我已尽力使模型/控制器/视图尽可能简单。
我的hr_account_view模型:
class HrAccountView < ActiveRecord::Base
self.table_name = 'hr_accounts_view'
include Savable
# belongs to :hr_account
belongs to :employee, foreign_key: :id
validates :Status, presence: true
end
Hr_Account_Views控制器:
class HrAccountViewsController < ApplicationController
load_and_authorize_resource
def show
@HrAccountView.Status = HrAccountView.Status
end
private
end
我也将视图分离到视图内自己的文件夹中,以使其与新控制器相关联。 我们正在常规显示页面中渲染此页面。
正在我们的节目hraccountsview / _apptment.html.erb中调用页面:
<table>
<tr>
<td>
Status<br />
<%= display_text_field @HrAccountView.Status %>
</td>
</tr>
</table>
我仔细阅读了许多有关此问题的文章,看起来问题似乎是控制器中的声明丢失了,但是我尝试了各种组合。 不幸的是,我在ruby和rails中所做的最重要的事情是页面的细微变化和一些搜索功能,但是不必添加额外的表/视图。
根据错误消息,我为nill:NillClass有一个未定义的方法'Status',它正在呈现的页面的第5行上发生。 如果我输入了抢救nil ,则该页面至少会显示标题,但没有数据。 正在预览的记录当前具有“状态”列的填充记录。 这使我相信模型而不是控制器存在问题,但是在这一点上,我一直在旋转轮子,试图找出丢失的连接在哪里。
有谁知道我在哪里丢失连接?
非常感谢您的帮助!
Rails版本3.2.13数据库版本:SQL 2012
def show @HrAccountView.Status = HrAccountView.Status end
除非我缺少任何内容, @HrAccountView
不会在任何地方定义,因此它是一个nil对象,这意味着您无法访问其上的Status
属性。 您应该首先在其中声明一些内容,例如@HrAccountView = HrAccountView.find(params[:id])
。 这将从您的视图(如果找到)中将一条记录加载到变量中。
有一些约定可能会有所帮助:
属性(列的模型版本)以小写形式指定。 所以:
validates :status, presence: true
实例变量相同。 例如:
def show
@status = HrAccountView.Status
end
我怀疑HrAccountView.Status
也可能是错误的,尽管可能不是。 我们需要查看控制器中还有什么其他情况。 通常,会有一些操作使用请求中的参数值在模型上进行find
。
控制器和视图中的变量名称必须匹配:
<%= display_text_field @status %>
在Ruby中,大写字符串(例如Status
)是常量,小写字符串是对变量或方法的引用。 如果以“ @”为前缀,则是对实例变量的引用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.