質問

OKここで何かが欠けていると確信していますが、私はRailsを初めて使用することを許してください。

Railsには、それぞれを指定するのではなく、オブジェクトのすべてのフィールドを表示する方法がありますか?

行くのではなく、show.htmlテンプレートで

<p>Name: <%=h @user.full_name %></p>
<p>Email: <%=h @user.email %></p>

私が持っている15個ほどのフィールドをそれぞれ入力することなく、onelinerにこれを実行させたいだけです。 管理ページなので、すべてのフィールド(id、created_atなど)が表示されていれば問題ありません。 これがPHPの場合、foreachを使用すると約5秒かかりますが、運が悪ければ1時間グーグルで検索しました(明らかに間違ったことです)。

ありがとう!

役に立ちましたか?

解決

次のようなもの

<% for attribute in @user.attributes.keys %>
  <p><%= attribute.humanize %> <%= @user.attributes[attribute].to_s %></p>
<% end %>

トリックを行うことができました。

マット

他のヒント

ActiveRecordモデルとして定義されているデータベーステーブルの行のすべての属性を表示するとします。クラスメソッド column_names (ActiveRecordモデルにはすべてあります)を使用できます。これは、配列内のテーブル列の名前を返します。

<%= User.column_names.collect { |col_name| "#{col_name.capitalize}: <p>#{@user[col_name]}</p>" }.join("\n") %>
<%= debug @user %>

オブジェクトを表示する簡単な方法...それは私が通常とにかく使用するものです!

@user.attributes.each{|key, value| puts "#{key} : #{value}"}

これは、表示したくない属性のブラックリストに使用したスニペットです...

コントローラー(user_controller.rb)     

def show

    keys_blacklist = %W(user_id name) #these are the fields to hide
    @user_showlist = @user.attributes.except(*keys_blacklist)

end

ビュー(show.html.erb):

<!-- language: ruby --><% for attribute in @user_showlist.keys %> 

  <b><%= attribute.humanize %></b>
  <%= @user.attributes[attribute].to_s %>
<!-- language: ruby --><% end %>

代わりに使用することもできます:

@user_showlist = @user.attributes.slice(*keys_whitelist)

プロパティのwhilelistを表示するため。

hamlを使用していて、たとえばビュー内のユーザーオブジェクトの属性をループする場合:

- for attribute in @user.attributes.keys
  %p
    = attribute.humanize
    = @user.attributes[attribute].to_s
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top