我有一个组织模型,它有一个名为org_type的属性。在我的组织形式中,我要求用户指定他们的组织类型是大学、学院还是其他类型的组织。在我的显示页面中,如果组织类型是大学或学院,我想显示一些文本。
我不能让这两种方法或功能发挥作用。如果我只要求检查一种组织类型,如下面所示,它可以正常工作:
<% if @organisation.org_type == 'University' %>如果我要求任何一种org类型,它都会显示所有内容,即使测试组织是“其他”:
<% if @organisation.org_type == 'University' or 'College' %>上面的话不起作用。它显示了组织类型为“other”的文本。
有人能看到我做错了什么吗?
发布于 2016-04-10 10:23:46
这种观点中的逻辑可能会变得复杂和难以维护。它总是从这几个条件的一次检查开始,然后被复制到六个地方,然后条件改变为“大学、大学或自学”,你必须找到所有使用它的地方。
最好将其提取到模型中的一个方法中,然后有视图只需询问模型。
# Organisation model
def uni_or_college?
%w(University College).include? org_type
end
# view
<% if @organisation.uni_or_college? %>
...
<% end %>这也是一种可测试的方法--如果您有确保.uni_or_college?方法返回预期内容的测试,如果(当)需求在未来发生变化时,您将有一个安全网来帮助您的重构。
发布于 2016-04-10 09:39:53
rails实际上运行在if条件下,作为两个独立的条件。
<% if @organisation.org_type == 'University' or 'College' %>@organisation.org_type == 'University'是真或 'College'。
均值,<% if (@organisation.org_type == 'University') || ('College') %>
要克服这种情况,您可以这样做:
<% if ['University', 'College'].include?(@organisation.org_type) %>如果是‘大学’或‘学院’的话,它将返回真实的。否则false
https://stackoverflow.com/questions/36528089
复制相似问题