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 回答