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

时间:2016-02-17 14:17:14

标签: redmine gitolite

>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(ouch)

我按照插件的入门指南进行操作。 我的老板想让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系统几乎没有经验,但我会说我的理解日益增长。这可能是一个不起眼的错误。这可能是一个错误。它可能是版本中的不匹配,其中方法的版本A用于调用另一段代码的后来改进版本。可能是必须从某个地方获取信息,并且redmine安装试图在没有正确配置的情况下获取信息。

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

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

真的很感激。

Reinier

更新(2016年2月18日): 通过编辑模板,可以再次访问用户页面。     &lt; = pagination_links_full @user_pages,@ user_count%&gt;&lt; / p - &gt; 但是,这是一个脏的临时修复,如果用户数量超过一个页面,将导致问题。谁能帮我找到永久解决方案?

@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_extensions gem。

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

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

我修改的模板是错误日志中的模板,因此它已构建为使用@user_pages。我还没有时间深入挖掘用户控制器。您是否认为修改用户控制器以设置变量,测试它是否以这种方式工作,然后向redmine_git_hosting插件的作者报告问题和建议的解决方案是最好的方法吗?

旁注:你说过两者,但在这种情况下,不值得一提到三方吗? (管理平台/ easyredmine / redmine_git_hosting)。怎么会报告这样的事情呢?是否涉及在论坛上发帖或向公司发送包含信息的电子邮件?我可以想到许多方法来报告它,但我不熟悉这些程序,并且不知道是否有一种标准化的方法可以在明显可能的沟通方式之外进行。 在将redmine报告给redmine之前,我也不知道是否应该在没有easyredmine的redmine上测试它。如果我正在为redmine工作,我会很高兴看到插件可能存在的问题,所以我可以归档潜在的问题并测试是否也适用于redmine。从我老板的角度来看,我认为他没有兴趣分配他必须支付的时间才能达到最低点。

再次感谢有人的大脑选择。

1 个答案:

答案 0 :(得分:1)

从错误消息中我可以说,呈现视图时@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),出了问题。

所以,去你的插件文件夹中的任何Ruby代码,以获得&#39; UsersController&#39;并检查重写的索引操作,并查找名为users/index.html.erb的文件。如果我猜对了,你找到了另一个有问题的插件,请将问题报告给两个插件的作者。 直到至少其中一个修复了他们的插件,坚持你的肮脏的黑客,并希望没有其他隐藏的问题(不是不可能给你的插件列表),或决定抛出至少一个冲突的插件。