【问题标题】:Rails - Easy way to display all fields in viewRails - 在视图中显示所有字段的简单方法
【发布时间】:2010-11-05 02:16:40
【问题描述】:

好的,我确定我在这里遗漏了一些东西,但请原谅我是 Rails 的新手。

Rails 中是否有某种方法可以显示对象的所有字段而不是指定每个字段?

在我的 show.html 模板中而不是去

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

我只想要一个 oneliner 来执行此操作,而不必输入我拥有的大约 15 个字段中的每一个。 它是一个管理页面,所以如果显示所有字段(id、created_at 等)就可以了 如果这是 PHP,使用 foreach 大约需要 5 秒,但我已经用谷歌搜索(显然是错误的事情)一个小时,但没有运气。

谢谢!

【问题讨论】:

    标签: ruby-on-rails view


    【解决方案1】:

    类似

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

    可以解决问题。

    马特

    【讨论】:

    • 谢谢!正是我想要的! .人性化吧!我想我的孩子有时需要它
    • 爱它!我最终使用了:&lt;% for attribute in ['name', 'age', 'etc'] %&gt; 只显示我想显示的字段。
    • 我搜索了一个小时才找到这个。太感谢了
    【解决方案2】:

    我想你想从定义为 ActiveRecord 模型的数据库表中显示一行的所有属性。您可以使用类方法 column_names(每个 ActiveRecord 模型都有它),它返回数组中表列的名称。

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

    【讨论】:

      【解决方案3】:
      <%= debug @user %>
      

      显示对象的简单方法...无论如何我通常都会使用它!

      【讨论】:

        【解决方案4】:
        @user.attributes.each{|key, value| puts "#{key} : #{value}"}
        

        【讨论】:

          【解决方案5】:

          这是我用来将一些我不想显示的属性列入黑名单的sn-p...

          控制器 (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)
          

          为了显示属性列表。

          【讨论】:

            【解决方案6】:

            如果您正在使用 haml 并希望循环访问例如视图中的用户对象的属性:

            - for attribute in @user.attributes.keys
              %p
                = attribute.humanize
                = @user.attributes[attribute].to_s
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-10-12
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多