所以我正在尝试为应该显示的图像设置一个条件语句
这是我家/索引视图文件中的部分
<% if @cloth.gender == "Female" && @cloth.size == "2T-3T" || "4T-5T" %>
这会在浏览器中返回错误:
undefined method `gender' for #<Array:0x4d2c578>
我将家庭控制器设置为:
def index
@cloth = Cloth.all
end
所以它应该能够访问所有“布料”,但事实并非如此。当我进入rails控制台时,我可以访问cloth.gender。不知道该怎么做......
提供的完整代码答案 0 :(得分:4)
更好的方法是在@cloths上使用each
方法:
<% @cloths.each do |cloth| %<
<% if cloth.gender == "Female" && cloth.size == "2T-3T" || "4T-5T" %>
....
注意我说@cloths ...您应该将索引def更改为@cloths = Cloth.all
(只是因此您的代码更清晰一点)。
修改
如评论和codeit的回答所示,条件问题在您最初编写时存在问题。另一种写作方式是
<% if cloth.gender == "Female" && (cloth.size == "2T-3T" || cloth.size == "4T-5T") %>
感谢使用codeit来识别此问题。
答案 1 :(得分:3)
Cloth.all
将返回Array
的实例。您需要使用each
来迭代Cloth.all
返回的所有实例,或者使用@cloth[0]
获取实例。
答案 2 :(得分:3)
试试这个:
@cloths.each do |cloth|
if cloth.gender == "Female" && ["2T-3T", "4T-5T"].include?(cloth.size)
#Or use `if cloth.gender == "Female" && (cloth.size == "2T-3T" || cloth.szie == "4T-5T")`
..
end
当(cloth.size == "2T-3T" || "4T-5T")
值为cloth.size
时, 4T-5T
将返回false。因为"2T-3T" || "4T-5T"
始终是2T-3T