这里的观点是:
<%= f.label form_val(:name) %>
这是自定义助手:
def form_val(input)
if @user.errors[input].blank?
input
else
@user.errors[input].to_sentence
end
end
以上工作原理如果出现表单错误,输入标签将显示验证错误。现在我需要将Input:添加到错误的开头,最后添加一个类。 因此显示:
<%= f.label :name, 'Name' + @user.errors[:name].to_sentence, class: "some_class" %>
我尝试了以下内容,因为它有意义,但我得到一个SyntaxError:
def form_val(input)
if @user.errors[input].blank?
input
else
input, @user.errors[input].to_sentence, class: "some_class"
end
end
答案 0 :(得分:1)
您正在尝试将方法参数作为方法的返回值返回。方法只能返回一个值;是int,string还是class对象。您的语法错误是因为它试图返回3个值。
您可能要做的是为视图或app / helpers / application_helper.rb创建一个帮助方法。这样你可以根据需要使用正确的参数返回f.label调用。类似的东西:
def error_helper(input, form)
if @user.errors[input].blank?
return form.label(input)
else
return form.label(input, @user.errors[input].to_sentence, class: "some_class")
end
end
为了便于阅读,我喜欢这种情况下的括号。我相信这可以使用更好的技术编写,但也许这会让你走上正确的轨道?