1

これを行う方法を疑問に思います。

月ヘルパーがあり、各月のリストをレンダリングしたいと考えています。

月をクリックすると、数値が渡されます。このようなリストを作成したい

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

それがリンクです。私のヘルパーはこんな感じです。

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

link_to を使用して名前を取得し、リンクを値にする方法を教えてください。つまり、行進の #3 です。

4

4 に答える 4

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
于 2010-12-01T15:43:05.530 に答える
0

私があなたを完全に理解しているなら、あなたはlink_toあなたがあなたのヘルパーモジュールのメソッドを呼び出したいということですよね?次に、ヘルパーメソッドが呼び出されると、link_toメソッドの結果が呼び出されたビューに返されます。

ヘルパーモジュールは、サービスリクエストに応じて作成されたインスタンスlink_toを介して以外はメソッドにアクセスできないため、それが必要な場合は、同様の問題に頭を悩ませています。ActionView::Helpers::URLHelperこのオブジェクトにはRailsシステム変数を介してアクセスできると思いますが、それが何であるかについては途方に暮れています。考え?

暫定版については、私の答えは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 %>

(はい、それはおそらくあなたが必要とするよりも冗長なコードでした。それは省略された可能性があります。)

于 2010-11-26T20:58:03.527 に答える
0
<% monthlist.each do |month| %>

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

<% end %>
于 2009-10-09T20:52:43.267 に答える
0

別の方法!ここに行きます:

メソッドからProcオブジェクトを作成しlink_to、それをビューからヘルパーに引数として渡します。これがどのように見えるかです...

ビューファイル:

<% 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ステートメントの2番目の引数には、link_toメソッドのURLを設定するために通常使用するものを使用します(例:) :controller => [x], :action => [y]

要約すると、メソッドをラップするProcを作成し、そのラップされたメソッドをヘルパーに送信します。これにより、ハイパーリンクのhtmlコードが返され、.html.erbファイルがhtmlページに出力します。

于 2010-11-26T22:16:13.707 に答える