0

そのため、オブジェクトの属性をビュー内のテーブルにマッピングしており、コードをもう少し簡潔にして冗長な HTML を排除したいと考えていました。

外観は次のとおりです。

- @users.each do |user|
   %tr
     %td= user.username
     %td= user.first_name
     %td= user.last_name
     %td= user.email
     %td= user.country
     %td= user.state
     %td= user.password 
      ...

%td= user.これらの冗長な呼び出しをすべて排除する良い方法があるかどうか疑問に思っていました. 私はForm Buildersに関する Railscast のエピソードを見ていましたが、彼は次のメタプログラミング構文を使用して繰り返しを排除するヘルパー メソッドを持っていました。

%w[text_field text_area password_field collection_select].each do |method_name|
    define_method(method_name) do |name, *args|

この構造に似たものを使用できる方法はありますか?メソッド名を置き換えた後、実際にこの正確な構文構造を実装しようとしましたが、define_method 関数が未定義のようです (皮肉なことに!)。

4

1 に答える 1

1

.sendメソッドを動的に呼び出すために使用します。

- %w(username first_name last_name ...).each do |method|
  %td= user.send(method) 
于 2012-10-05T20:24:47.203 に答える