【问题标题】:Rails 4 - how to use a helper method in the parent viewRails 4 - 如何在父视图中使用辅助方法
【发布时间】:2016-08-19 02:36:42
【问题描述】:

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

我有用于项目和潜在用途的模型。这些关联是:

项目

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

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

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

谁能看出我哪里出错了?

【问题讨论】:

  • 助手里面的@current_user是什么?您是否尝试将其打印到控制台?
  • @ArunKumar - 这是一种查看登录用户是谁的设计方法。
  • 我猜devise提供的方法是current_user。我的回答能解决你的问题吗?

标签: ruby-on-rails ruby helper helpers


【解决方案1】:

您在帮助器中接收到参数project,但在帮助器方法中,您尝试访问@project.profile.user_id@project 在助手中为零。你应该使用

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

【讨论】:

  • 感谢 Arun - 这很有道理
  • 太棒了!更新了我的答案。
猜你喜欢
  • 1970-01-01
  • 2016-11-25
  • 1970-01-01
  • 2016-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多