form_for Custom Rails Helper

时间:2014-06-03 21:35:23

标签: ruby-on-rails validation view-helpers form-helpers

这里的观点是:

<%= 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

1 个答案:

答案 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

为了便于阅读,我喜欢这种情况下的括号。我相信这可以使用更好的技术编写,但也许这会让你走上正确的轨道?