【发布时间】:2017-04-07 15:18:16
【问题描述】:
以下是我的控制器Projects#show方法。
def show
@project = Project.find(params[:id])
@pm = User.find(@project.user_id)
@employees = {}
@supervisors = User.all.where("id = ?", Relationship.all.where("supervisor_id = ?", @project.user_id).pluck(:supervisor_id))
@supervisor_ids = Relationship.all.where("supervisor_id = ?", @project.user_id).pluck(:supervisor_id)
for supervisor in @supervisor_ids
@employees[supervisor] = User.all.where("id = ?", Relationship.all.where("supervisor_id = ?", supervisor).pluck(:employee_id))
end
end
以下是我的 Projects#show 查看 html.erb 文件。
<%= react_component 'ProjectManage', { pm: @pm, supervisors: @supervisors, employees: @employees } %>
以下是我的 react 前端
@ProjectManage = React.createClass
getInitialState: ->
pm: @props.pm
render: ->
React.DOM.div
className: 'org-chart'
@props.pm.email
for supervisor in @props.supervisors
React.DOM.ul supervisor.email
for employee in @props.employees[supervisor]
React.DOM.li employee.email
我得到的错误信息是:
ActiveRecord 中已完成 500 内部服务器错误。
NoMethodError(ProjectsController#show:0x007fa195b59da0 的未定义方法 `'
于 2016 年 11 月 24 日 06:31:38 -0800 开始为 127.0.0.1 获取“/projects/1” ProjectsController#show 处理为 HTML 参数: {"id"=>"1"} 用户负载 (0.1ms) SELECT "users".* FROM "users" WHERE “用户”。“ID”=? ORDER BY "users"."id" ASC LIMIT 1 [["id", 2]]
项目加载(0.1ms)选择“项目”。*从“项目”WHERE “项目”。“ID”=? LIMIT 1 [["id", 1]] 用户负载 (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = ?限制 1 [["id", 1]]
(0.1ms)从“relationships”中选择“relationships”。“supervisor_id” WHERE (supervisor_id = 1) 用户负载 (0.1ms) SELECT "users".* FROM “用户” WHERE (id = 1) 在 17 毫秒内完成 500 内部服务器错误 (ActiveRecord: 0.5ms)NoMethodError (undefined method ' ' for#): app/controllers/projects_controller.rb:11:in `show'
渲染 /home/ferg/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-4.2.6/lib/action_dispatch/middleware/templates/rescues/_source.erb (2.7ms) 渲染 /home/ferg/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-4.2.6/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (1.1ms ) 渲染 /home/ferg/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-4.2.6/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (2.0ms) 渲染 /home/ferg/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-4.2.6/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb 在救援/布局(19.6 毫秒)内渲染 /home/ferg/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/web-console-2.3.0/lib/web_console/templates/_markup.html.erb (0.2ms) 渲染 /home/ferg/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/web-console-2.3.0/lib/web_console/templates/_inner_console_markup.html.erb 在 layouts/inlined_string (0.2ms) 内渲染 /home/ferg/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/web-console-2.3.0/lib/web_console/templates/_prompt_box_markup.html.erb 在 layouts/inlined_string (0.3ms) 内渲染 /home/ferg/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/web-console-2.3.0/lib/web_console/templates/style.css.erb 在 layouts/inlined_string (0.4ms) 内渲染 /home/ferg/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/web-console-2.3.0/lib/web_console/templates/console.js.erb 在 layouts/javascript (22.3ms) 内渲染 /home/ferg/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/web-console-2.3.0/lib/web_console/templates/main.js.erb 在 layouts/javascript (0.2ms) 内渲染 /home/ferg/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/web-console-2.3.0/lib/web_console/templates/error_page.js.erb 在 layouts/javascript ( 0.2ms) 渲染 /home/ferg/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/web-console-2.3.0/lib/web_console/templates/index.html.erb (34.9 毫秒)
【问题讨论】:
-
您应该发布整个错误堆栈跟踪,它将帮助您找到导致显示方法错误的行
-
我正在旅行并通过手机发布。我会把它加载到我的电脑上然后给你。
-
显然问题出在:@supervisors = User.all.where("id = ?", Relationship.all.where("supervisor_id = ?", @project.user_id).pluck(: supervisor_id))
标签: ruby-on-rails reactjs nomethoderror react-on-rails