Rails 4 - 如何在父视图中使用辅助方法

Rails 4 - how to use a helper method in the parent view

我正在尝试弄清楚如何使用助手文件。

我有项目和潜在用途的模型。这些协会是:

项目

has_many :potential_uses
accepts_nested_attributes_for :potential_uses, reject_if: :all_blank, allow_destroy: true

潜在用途

belongs_to :project
belongs_to :user

在我的项目显示页面中,我引用了一个在我的项目帮助文件夹中定义的帮助方法:

<%= potential_uses_for_viewer(@project) %>

辅助方法(在 projects_helper.rb 中)有:

def potential_uses_for_viewer(project)
  if @current_user.id == @project.profile.user_id 
    render 'potential_uses/private_comments'
  else 
    render 'potential_uses/open_comments'
  end
end

我的潜在用途视图文件夹中有两个视图部分。如果当前用户是项目创建者,我想渲染其中一个部分,如果当前用户不是项目创建者,我想渲染另一个部分。

目前没有渲染错误,但是projects文件夹中的helper不起作用。无论我是否以创建项目的用户身份登录,我都会看到 potential_uses/open_comments 视图。

谁能看出我哪里出错了?

您在帮助器中收到一个参数 project,但在帮助器方法中,您正在尝试访问 @project.profile.user_id@project 在助手内部为 nil。你应该使用

if @current_user.id == project.profile.user_id 
  render 'potential_uses/private_comments'