Ruby 从帮助程序链接到

Ruby 从帮助程序链接到,ruby,link-to,Ruby,Link To,不知道怎么做 我有一个月助手,并希望呈现每个月的列表 如果您单击月份,它将传递数值。我想制作一份这样的清单 Choose a month January - February - March - April - May..... 这些都是链接。我的助手看起来像这样 MONTHLIST = [ [ "January", "1" ], [ "February", "2" ], [ "March", "3" ] ].freeze 如何使用link_获取名称,并使用link作为

不知道怎么做

我有一个月助手,并希望呈现每个月的列表

如果您单击月份,它将传递数值。我想制作一份这样的清单

Choose a month
January - February - March - April - May.....
这些都是链接。我的助手看起来像这样

 MONTHLIST =  [
  [ "January", "1" ],
  [ "February", "2" ],
  [ "March", "3" ] 
  ].freeze
如何使用link_获取名称,并使用link作为值。i、 三月的e#3。


<% monthlist.each do |month| %>

<%= link_to month[0], your_route(month[1]) %>

<% end %>

如果我完全理解您的意思,您的意思是您想调用helper模块中的
link\u to
方法,对吗?然后调用helper方法时,将
link\u to
方法的结果返回给调用它的任何视图

如果这正是您想要的,那么我正与一个类似的问题针锋相对,因为helper模块无法访问
link\u to
方法,除非通过响应您的服务请求而创建的
ActionView::Helpers::URLHelper
实例。我假设这个对象可以通过Rails系统变量访问,但我不知道这可能是什么。想法

对于interrim,我的答案是只在视图文件中使用
link\u to
方法。您的帮助文件将如下所示:

module MyHelper
  def MyHelper.my_helper_method
    MONTHLIST =  [ [ "January", "1" ],  [ "February", "2" ],  [ "March", "3" ]   ].freeze
  end
end
然后,视图文件将调用helper方法,因此:

<% require '[path to helper file]' %>
<% months = MyHelper.my_helper_method %>
<% months.each do |month_name, month_num| %>
  <%= link_to(month_name, month_num) %>
<% end %>


(是的,那可能是一个比你需要的更详细的代码。它可以被缩写。)

如果我完全理解你的意思,你的意思是你想在助手模块中调用
link_到
方法,对吗?然后调用helper方法时,将
link\u to
方法的结果返回给调用它的任何视图

如果这正是您想要的,那么我正与一个类似的问题针锋相对,因为helper模块无法访问
link\u to
方法,除非通过响应您的服务请求而创建的
ActionView::Helpers::URLHelper
实例。我假设这个对象可以通过Rails系统变量访问,但我不知道这可能是什么。想法

对于interrim,我的答案是只在视图文件中使用
link\u to
方法。您的帮助文件将如下所示:

module MyHelper
  def MyHelper.my_helper_method
    MONTHLIST =  [ [ "January", "1" ],  [ "February", "2" ],  [ "March", "3" ]   ].freeze
  end
end
然后,视图文件将调用helper方法,因此:

<% require '[path to helper file]' %>
<% months = MyHelper.my_helper_method %>
<% months.each do |month_name, month_num| %>
  <%= link_to(month_name, month_num) %>
<% end %>


(是的,这可能是一个比您需要的更详细的代码。它可以被缩写。)

另一种选择!下面是:

link\u到
方法中创建一个Proc对象,然后将其作为参数从视图传递给帮助器。下面是它的外观

您的视图文件:

<% require 'app/helpers/myhelper.rb' %>
<% proc_object = Proc.new( { |anchor_text, args| link_to(anchor_text, args) } )
<%= MyHelper.my_helper_method(proc_object) %>
对于proc.call语句中的第二个参数,使用通常用于在
链接中设置url的方法,例如
:controller=>[x],:action=>[y]


总而言之,您所做的是制作一个过程来包装您的方法,然后将包装好的方法发送给您的助手,助手将返回超链接的html代码,您的.html.erb文件将打印到您的html页面。

另一种选择!下面是:

link\u到
方法中创建一个Proc对象,然后将其作为参数从视图传递给帮助器。下面是它的外观

您的视图文件:

<% require 'app/helpers/myhelper.rb' %>
<% proc_object = Proc.new( { |anchor_text, args| link_to(anchor_text, args) } )
<%= MyHelper.my_helper_method(proc_object) %>
对于proc.call语句中的第二个参数,使用通常用于在
链接中设置url的方法,例如
:controller=>[x],:action=>[y]


总而言之,您所做的是制作一个过程来包装您的方法,然后将包装好的方法发送给您的帮助者,这将返回超链接的html代码,您的.html.erb文件将打印到您的html页面。

这里有一个简单的方法:将视图传递给帮助者

在你看来

<%= your_helper(self, other_params) %>

这里有一个简单的方法:将视图传递给助手

在你看来

<%= your_helper(self, other_params) %>