ActionView::Template::Error(nil:NilClass 的未定义方法 `page_param')

ActionView::Template::Error (undefined method `page_param' for nil:NilClass)

>Environment:
  >>Redmine version                3.1.3.stable
  >>Ruby version                   2.1.5-p273 (2014-11-13) [x86_64-linux-gnu]
  >>Rails version                  4.2.5
  >>Environment                    production
  >>Database adapter               Mysql2

>SCM:
  >>Subversion                     1.8.10 
  >>Git                            2.1.4
  >>Filesystem                     
  >>Xitolite                       2.1.4
>Redmine plugins:
  >>ckeditor                       
  >>clipboard_image_paste          1.9
  >>easy_cocoon                    
  >>easy_extensions                2014.06.05
  >>easy_alerts                    2014
  >>easy_attendances               2014
  >>easy_budgetsheet               2014
  >>easy_calculation               2014
  >>easy_contacts                  2014
  >>easy_crm                       2014
  >>easy_helpdesk                  2014
  >>easy_instant_messages          2014
  >>easy_knowledge                 2014
  >>easy_money                     2014
  >>easy_printable_templates       2014
  >>easy_project_attachments       2014
  >>easy_quick_project_planner     2014
  >>easy_redmine                   
  >>easy_theme_designer            2014
  >>easy_to_do_list                2014
  >>easy_user_allocations          2014
  >>easy_xml_helper                2014
  >>easy_baseline                  2014
  >>easy_gantt                     2016.01.1000
  >>easy_gantt_pro                 2016-RC1.0
  >>redmine_bootstrap_kit          0.2.4
  >>redmine_git_hosting            1.2.0

错误

Started GET "/redmine/users" for 192.168.50.1 at 2016-02-17 14:35:41 +0100
Processing by UsersController#index as HTML
  Current user: admin (id=1)
  Rendered plugins/redmine_git_hosting/app/views/users/index.html.erb within layouts/admin (13.7ms)
Completed 500 Internal Server Error in 49ms (ActiveRecord: 3.7ms)

ActionView::Template::Error (undefined method `page_param' for nil:NilClass):
53:   </tbody>
54: </table>
55: </div>
56: <p class="pagination"><%= pagination_links_full @user_pages, @user_count %></p>
57:
58: <% html_title(l(:label_user_plural)) -%>
lib/redmine/pagination.rb:157:in `pagination_links_full'
lib/redmine/sudo_mode.rb:63:in `sudo_mode'

采取的步骤: 安装redmine(一切正常) 安装easyredmine(一切正常) 安装 Gitolite3(一切正常) 已安装 Git_hosting_plugin 1.2.0(哎哟)

我遵循了插件的入门指南。 我的老板希望 PassengerUser 是 redmine,所以我将 redmine 设置为 redmine 用户帐户。 redmine 用户可以按照描述通过 SSH 与 gitolite 通信。我还设置了 sudoers。d/redmine 没有任何问题。

一开始似乎一切正常,登录 localIP/redmine 正常,为 redmine 用户配置了 Passenger。

我的问题是,当我访问 redmine/users 页面时,出现上述错误,并写入 production.log。我不知道为什么 page_param 未定义,或者 pagination_links_full 出了什么问题。我不想修改 ruby 文件,因为在稍后更新时可能会遇到麻烦。

我是在 linux 服务器环境中安装 redmine 和其他程序的新手,对 UNIX 系统几乎没有经验,但我想说 day.It 我的理解增长了很多是一个愚蠢的错误。这可能是一个错误。它可能是版本不匹配,其中方法的版本 A 用于调用另一段代码的后来改进版本。可能是必须从某个地方获取信息,而 redmine 安装试图在没有正确配置的情况下获取信息。

如果我不得不猜测,我最好的猜测是 ruby 分页文件与配置的其余部分不兼容,可能应该被不同的版本替换。

有人可以向我解释这里出了什么问题,或者如何解决这个问题(或者最好同时解决这两个问题)吗?

非常感谢。

雷尼尔

更新(18/02/2016): 通过编辑模板,可以再次访问用户页面。 <= pagination_links_full @user_pages, @user_count %>

但是,这是一个肮脏的临时修复程序,如果用户数量超过一个页面,则会导致问题。谁能帮我找到永久的解决方案?

@Jkraemer (19/02/2016)

非常感谢您的反馈。 现在我没有分配任何额外的时间来解决这个问题,但我确实根据你写的内容看了看。顺便说一句,任何以 easy_ 开头的插件都是标准的 easyredmine 插件,所以插件列表比看起来要小。

有users/index.html.erb文件的目录:

  >/opt/redmine/redmine-3.1.3/app/views/users/index.html.erb
  >/opt/redmine/redmine-3.1.3/plugins/easyproject/easy_plugins/easy_extensions/app/views/users/index.html.erb
  >/opt/redmine/redmine-3.1.3/plugins/redmine_git_hosting/app/views/users/index.html.erb
  >/var/lib/gems/2.1.0/gems/redmine_extensions-0.0.20/spec/redmine/app/views/users/index.html.erb

前两个是 redmine 和 easyredmine,在安装 redmine_git_hosting 插件之前工作正常。最下面那个好像是标准的redmine_extensionsgem.

如果我不得不做出比以前更有根据的猜测,我会说结合其他安装没有出现问题的事实,redmine_git_hosting 插件似乎是罪魁祸首,或者至少与 redmine and/or easyredmine 结合会导致问题。它也是在 redmine git 托管目录和文件中,我通过修改模板文件实现了脏修复,这暂时 'fixed' 了问题。有趣的是一段简单的代码如何确定要显示多少用户页面,这基本上已经过时,除非你的 redmine 环境有超过一页的用户,会导致整个用户 management 界面被禁用.

插件似乎确实修补了 UsersController: /opt/redmine/redmine-3.1.3/plugins/redmine_git_hosting/lib/redmine_git_hosting/patches/users_controller_patch.rb

我修改的模板是错误日志中的模板,所以它已经构造为使用@user_pages。我还没有时间深入研究用户控制器。你认为修改 Users Controller 来设置变量,测试它是否能正常工作,然后向 redmine_git_hosting 插件的作者报告问题和建议的解决方案是最好的方法吗?

旁注:你都说了,但这种情况,不值得向三方提吗? (redmine/easyredmine/redmine_git_hosting)。怎么会去报道这样的事情呢?是否涉及在他们的论坛上制作 post 或向公司发送包含信息的电子邮件?我可以想出很多方法来报告它,但我不熟悉这样的程序,也不知道除了明显的可能的沟通方式之外是否有标准化的方式来做这件事。 我也不知道在向 redmine 报告之前,我是否应该在没有 easyredmine 的情况下在 redmine 上测试它。如果我在为 redmine 工作,我将不胜感激任何关于插件可能出现的问题的提醒,这样我就可以存档潜在的问题并测试它是否也适用于 redmine。从我老板的角度来看,我认为他没有兴趣分配他必须花钱才能查明真相的时间。

再次感谢有心人来挑

根据错误消息,我会说 @user_pages 在呈现视图时为 nil。查看 app/controllers/users_controller.rb 这不应该是这种情况,因为它是在索引操作中设置的。因此,下一步是查明您的某个插件是否覆盖/修补了 UsersController#index 或以其他方式弄乱了 @user_pages 实例变量。

一个疯狂的猜测是你安装的另一个插件带来了它自己的 UsersController#index 版本(它没有设置 @user_pages),加上它自己的 users/index.html.erb 版本模板(不需要 @user_pages)。仅此一项就已经很糟糕了,但是在您安装 git 托管插件之前,一切都可能会正常工作,该插件还带来了自己的 users/index.html.erb 版本(它再次需要 @user_pages,就像原来的 users/index.html.erb 的核心 Redmine),然后事情就出错了。

所以去 grep 插件文件夹中的任何 Ruby 代码以获得 'UsersController' 并检查覆盖的索引操作,并查找名为 users/index.html.erb 的文件。如果我的猜测是正确的并且您发现了另一个有问题的插件,请将问题报告给两个插件的作者。 在至少其中一个修复了他们的插件之前,坚持你的肮脏的黑客并希望没有其他隐藏的问题(考虑到你的插件列表不太可能),或者决定至少扔掉一个冲突的插件。