ruby-on-rails - rails : undefined method error when move codes from view to helper file

标签 ruby-on-rails ruby

在approval.html.erb

<% @approval.each do |approval| %>
    <td><%= Material.find_by_id(approval.material_id).m_name%></td>
<% end %>

我想将 Material.find_by_id(approval.material_id) 移动到审批帮助文件。

在 approval_helper.rb 中

def approval_material
  Material.find_by_id(approval.material_id)
end

然后,我修改approval.html.erb

<% @approval.each do |approval| %>
    <td><%= approval_material.m_name%></td>
<% end %>

但是,它显示错误

undefined local variable or method `approval'

错误的原因是什么,如何解决?谢谢

最佳答案

您需要将参数传递给辅助方法approval_material 方法。像这样的东西:

def approval_material(approval)
  Material.find_by_id(approval.material_id)
end

然后在您的 View 中您可以这样调用它:

<% @approval.each do |approval| %>
    <td><%= approval_material(approval).m_name%></td>
<% end %>

关于ruby-on-rails - rails : undefined method error when move codes from view to helper file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39302864/

相关文章:

ruby-on-rails - rails : what happens to data after migrating column from decimal to integer

ruby-on-rails - Rails 中的 Postgres 查询 : where not

ruby-on-rails - pg gem 安装失败

ruby - 模拟哈希之间的连接

ruby - Ctags - 查找函数在项目中的使用位置

ruby-on-rails - 难以理解在 Ruby 类的初始化(构造函数)中使用 self 和 @ 之间的区别

ruby-on-rails - HTTP Origin header (https ://example. com) 与 request.base_url (http ://example. com) 不匹配

ruby-on-rails - Rails 3.0.x 是否可以默认使用 Thin?

mysql - rails ActiveRecord : Looking for a db agnostic version of this statement

ruby-on-rails - 使用 CanCan 在 Active Admin 中不会拒绝用户访问