我有理由将content_tag方法从帮助程序传递到模块中:

module MyHelper
  def helper_method1(a, b)
    MyModule.module_method1(a, b, &content_tag)
  end
end

def MyModule
  def self.module_method1(a, b, &content_tag)
    #......
    my_tag = content_tag.call(:span, nil, class: "some_class123")
  end
end

我收到的错误是wrong number of arguments (0 for 1+) 我究竟做错了什么?

===============>>#1 票数:0 已采纳

您以错误的方式进行操作,在您的代码中尝试在方法中使用co pass块(不存在),在这种情况下,您要么将其传递给您的辅助方法,要么将视图上下文传递给内部并将content_at委托给该上下文。

区块委派

 module MyHelper
  def helper_method1(a, b, &block)
    MyModule.module_method1(a, b, &block)
  end
 end

 def MyModule
   include ActionView::Helpers::TagHelper

   def self.module_method1(a, b, &block)
     #......
     my_tag = content_tag(:span, &block, class: "some_class123")
   end
 end

通过视图上下文

 module MyHelper
  def helper_method1(a, b)
    MyModule.module_method1(a, b, self)
  end
 end

 def MyModule
   def self.module_method1(a, b, view_context)
     my_tag = view_context.content_tag(:span, nil, class: "some_class123")
   end
 end

考虑到在第一个示例中include ActionView::Helpers::TagHelper是至关重要的

您可以在Rails帮助器的类中使用link_to进行检查,这也可能很有用

  ask by アレックス translate from so

未解决问题?本站智能推荐:

2回复

Rails助手方法在不起作用的地方工作?

在我的helper/posts_helper.rb文件中,我正在定义这样的方法: 我认为该测试助手仅应在我的帖子视图中起作用。 但是它适用于我所有的观点,甚至是我应用程序其他资源的观点。 我没有把它放在application_helper.rb 。 怎么发生的? 这是我的ap
1回复

实施datagrid gem和会话助手方法

我是一个尝试实现datagrid gem ( https://github.com/bogdan/datagrid )的新手。 不幸的是,我收到三个错误消息: 删除上面的所有行,表格就可以工作了:-) 有什么建议如何更改下面的代码以适应这些错误? 我的代码:安装gem之后
2回复

应用程序助手方法可用性

我正在使用Rails 4并试图包含koudoku条纹宝石。 这是我的路线: 这是我得到的错误: 我可以很好地访问其他路由,它只是尝试从模块路由中呈现Application Helper方法(例如,我定义的自定义应用程序方法,或路由方法)...这有意义吗? 我该如何解决?
1回复

为什么在使用路径助手方法时必须使用括号?

知道这在Ruby中是可行的: 这将是另一种编程语言中的等价物: 为什么说这是不可能做到这一点与自动生成的路线助手,这是方法跟人家一样? 例如: 是有效的 - 例如,它返回<a href="/tickets/1">Lorem ipsum.</a>
1回复

全局覆盖Rails URL助手方法

我有一条路由在我的应用程序中用作foo_path => /foo 现在,我将此路由迁移到另一个应用程序,该应用程序以不同的方式/deep/path定义了URL /deep/path并且还以不同的方式命名了foo_path控制器过去使用的query_paramters 。 我正在
2回复

如何在Rails中使用缩写作为助手模块名称

我有一个名称缩写的模型,因此我将其配置为: config / initializers / inflections.rb 我为该模型创建了帮助程序模块。 app / helpers / gnus / gnus_helper.rb 然后我Circular depende
1回复

将助手方法返回值设置为实例变量

因此,我在面包屑中有一个应用程序范围的帮助方法,我在布局中使用所有视图页面。 这是下面的方法 根据我的理解,视图中的变量应该是实例变量而不是方法,但是在视图中声明实例变量似乎没有意义,但我不确定如何去做,是否可以接受只是把它breadcrumbs.each do方法调用,例如bre
1回复

Rails:使Devise助手在模块中可用(通常在控制器外部)

我正在使用Rails 4.1进行开发。 我有以下模块(在app/policies/model_filters/helpers.rb : 我将其包含在我的app\\controllers\\application_controller.rb : 在我要使用它们的类中( app
2回复

从控制器访问助手方法时未定义的局部变量或方法

我创建了一个称为“内部发行版”的控制器。 我想检查多选对象是否至少包含一个选择。 在我的控制器中,我有: 我创建了一个简单的辅助方法: 由于某种原因,我得到: 是什么原因造成的?
1回复

如何从资产/ javascript /部分调用应用程序助手中的方法?

我是Ruby on Rails开发的新手。 我在application_helper.rb中有一个功能 此功能在视图中有效,我在页面中看到类似Facebook的按钮 但是它不能局部运行。 应用/资产/ javascript /部分 这是我的偏爱index.h