很抱歉,如果这是非常严重的问题;这是我在这里的第一篇文章。我在轨道上使用erb for ruby,我想知道我是否可以根据用户选择使div的背景颜色不同。我在网上看了找不到答案。我是新手,我还在努力学习如何搜索。
<div class="row">
<% @stores.each do |store| %>
<div class="col s12 m6">
<% if store.color = 'red' %>
<% profile_color = 'red' %>
<% elsif store.color = 'blue' %>
<% profile_color = 'blue' %>
<% elsif store.color = 'green' %>
<% profile_color = 'green' %>
<% elsif store.color = 'orange' %>
<% profile_color = 'orange' %>
<% end %>
<div class="card <%= profile_color %> center">
<div class="card-content white-text">
<span class="card-title"> <%= store.name %> </span>
<h6>Owner: <%= store.owner %> </h6>
<h6>Location: <%= store.location %> </h6>
</div>
<div class="card-action" >
<%= link_to 'Visit Store', store_departments_path(store) %>
<%= link_to 'Edit', edit_store_path(store) %>
<%= link_to 'Delete', store_path(store), method: :delete,
data: {confirm: 'Really Delete?'} %>
</div>
</div>
</div>
<% end %>
</div>
我使用一个表单向用户询问颜色,并从下拉列表中查看类型字符串。我已经检查过,@ store.color正在存储颜色和所有内容。
答案 0 :(得分:1)
问题是profile_color
是在每个if
的范围内定义的,所以当你到达class属性为nil时,因为我看到if除了分配相同的值之外没有做任何事情,你可以改变:
<div class="card <%= profile_color %> center">
使用store.color
之类的:
<div class="card <%= store.color %> center">
删除所有if
答案 1 :(得分:1)
是的,您应该能够使用profile_color
/ if
语句设置else
变量,然后将其输出到class
属性中。
这个特定代码的问题是
if store.color = 'red'
不会检查store.color
是否等于'red'
,将值<{1}} 分配给'red'
,然后检查值{{ 1}}是真实的。它是真实的(store.color
或'red'
除外),因此无论false
的原始值是什么,nil
都应设置为profile_color
。< / p>
您想要使用
'red'
代替。虽然正如其他答案中指出的那样,如果store.color
始终与if store.color == 'red'
相同,您可以在profile_color
属性中使用store.color
并跳过{ {1}}。如果您想确保只有某些值可以放入store.color
,那么您可以检查class
是否添加profile_color
,如果它不存在的话。
答案 2 :(得分:0)
我可能会误解,为什么你不做这样的事情
<% @stores.each do |store| %>
<div class="col s12 m6">
<div class="card <%= store.color %> center">
<div class="card-content white-text">
<span class="card-title"> <%= store.name %> </span>
<h6>Owner: <%= store.owner %> </h6>
<h6>Location: <%= store.location %> </h6>
</div>
<div class="card-action" >
<%= link_to 'Visit Store', store_departments_path(store) %>
<%= link_to 'Edit', edit_store_path(store) %>
<%= link_to 'Delete', store_path(store), method: :delete,
data: {confirm: 'Really Delete?'} %>
</div>
</div>
</div>
<% end %>