0
在我的show view中,我有一些不需要用户填写的属性。在我的节目我观点可以很容易地创建一个条件,像这样:只显示Rails中存在的属性
<% if @user.occupation.present? %>
<p><%= @user.occupation %></p>
<% end %>
但是,如果我有3个或更多这些可选属性,从而为他们每个人多条件语句可能会变得非常乏味。我认为做这样的事情,但事实证明,该方法是attribute
私营:
<% @user.attributes.map do |attribute, name| %>
<% if @user.attributes.present? %>
<p><b><%= name %>:</b> <%= @user.attribute %></p>
<% end %>
<% end %>
为了安全起见,我没有必要试图从被私人改变属性的方法,但越是这样只是在寻找一种方式列出已经排满在我的模型的属性。
对于你的第一个解决方案,我得到了错误'错误的参数数目(0 1)' – 2014-11-05 16:47:13
这是'@ user.send(属性)',而不是'@ user.send(:属性)'。我在两种情况下都修复了代码。 – 2014-11-05 16:48:00
我现在发现的唯一的事情就是它只能识别属性的值而不是名称。因此,它读取“John Doe:John Doe”,它应该在其中读取“name:John Doe” – 2014-11-05 16:52:10