我有一个苗条的部分:
- name = (defined?(name) ? name : 'tags')
- id = (defined?(id) ? id : ('input-' + name))
- label = defined?(label) ? label : nil
- placeholder = defined?(placeholder) ? placeholder : nil
- className = defined?(className) ? className : nil
- prefetch = defined?(prefetch) ? prefetch : nil
- displayKey = defined?(displayKey) ? displayKey : nil
- valueKey = defined?(valueKey) ? valueKey : nil
.input-container.tags
- if label
label for="#{id}" = label
input type="text" id="#{id}" name="#{name}" placeholder="#{placeholder}" data-prefetch="#{prefetch}" data-displayKey="#{displayKey}" data-valueKey="#{valueKey}"
当我使用它(通过==渲染)并将当地人传递到里面时 - 一切都很好。
但是,当我省略名称时 - 它没有分配给默认的标签'。同样适用于id。它们只是空的。如果我在开头注释掉分配 - 未定义的变量错误会引发预期。
作业有什么问题?
答案 0 :(得分:3)
你不需要苗条。只需irb
代码:
name = (defined?(name) ? name : 'tags')
p name #=> nil
它不起作用,因为您在语句name
的左侧隐式定义name = ...
。因此,当Ruby解释器评估defined?(name)
时,它会给出真正的结果。
我想你已经得到了答案:
unless defined?(name)
name = 'tags'
end
或更短:
name ||= 'tags'