2009-10-08 42 views
0

想知道如何做到這一點。link_to幫手

我有一個月的幫手,想呈現每個月的列表。

如果你點擊月份,它會通過數字值。我想生成這樣的列表

Choose a month 
January - February - March - April - May..... 

這是鏈接。我的幫手看起來像這樣。

MONTHLIST = [ 
    [ "January", "1" ], 
    [ "February", "2" ], 
    [ "March", "3" ] 
    ].freeze 

如何使用link_to來獲取名稱和鏈接值。即3月進行遊行。

回答

0
<% monthlist.each do |month| %> 

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

<% end %> 
0

如果我完全理解你,你的意思是你要調用的方法link_to你的助手模塊中,對不對?然後,輔助方法在調用時將返回link_to方法的結果給稱爲它的任何視圖。

如果這是你想要什麼,我撞我的頭靠在了類似的問題,因爲幫助模塊不能訪問link_to方法,除了通過在響應您的服務請求創建的ActionView::Helpers::URLHelper實例。我假定這個對象可以通過Rails系統變量來訪問,但是我對這可能是一種損失。思考?

對於interrim,我的答案是僅在您的視圖文件中使用link_to方法。你的助手文件看起來是這樣的:

module MyHelper 
    def MyHelper.my_helper_method 
    MONTHLIST = [ [ "January", "1" ], [ "February", "2" ], [ "March", "3" ] ].freeze 
    end 
end 

那麼你的視圖文件會調用輔助方法這樣:

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

(是的,這很可能比你需要一個更詳細的代碼,它可能已被縮寫)。

0

另一種!這裏有:

link_to方法中創建一個Proc對象,然後將它從您的視圖傳遞給助手作爲參數。下面是它的外觀...

您的視圖文件:

<% require 'app/helpers/myhelper.rb' %> 
<% proc_object = Proc.new({ |anchor_text, args| link_to(anchor_text, args) }) 
<%= MyHelper.my_helper_method(proc_object) %> 

你的助手文件:

module MyHelper 
    def my_helper_method(proc_object) 
    months.each do |name, num| 
     proc.call(name, :action => 'show', :id => num) 
    end 
    end 
end 

對於您proc.call語句中的第二ARG,使用你想什麼通常用於在您的link_to方法中設置網址,例如:controller => [x], :action => [y]。回顧一下,你正在做的是製作一個包裝你的方法的Proc,然後把這個包裝好的方法發送給你的幫助器,它將爲你的超鏈接返回html代碼,你的.html.erb文件將打印到你的html頁面。

1

這裏有一個簡單的方法:通過視圖助手

在你看來

<%= your_helper(self, other_params) %> 

。 。

放在你的助手

def your_helper(view, other_params) 
    do_something_with_params 
    view.raw view.link_to(.... link to params) 
end