html.erb无法正确呈现

时间:2013-02-08 23:30:15

标签: html ruby-on-rails forms

我有一个html.erb文件,在使用以下内容时不会呈现任何内容:

<% form_for :profile do |form| %>

使用时(注意“=”符号):

<%= form_for :profile do |form| %>

这是html的输出:

web page

部分HTML代码:

<%= form_for :profile do |form| %>

<%= text_field_for form, "first_name" %>
<%= text_field_for form, "last_name" %>
<div class="form_row">
    <label for="gender">Gender:</label>
    <%= radio_button :profile, :gender, "Male" %> Male
    <%= radio_button :profile, :gender, "Female" %> Female
</div>
<div class="form_row">
    <label for="birthdate">Birthdate:</label>
    <%= date_select :profile, :birthdate,
                    :start_year => Profile::START_YEAR,
                    :end_year => Time.now.year,
                    :include_blank => true,
                    :order => [:month, :day, :year] %>
</div>

Form_for定义:

def text_field_for(form, field,
                  size=HTML_TEXT_FIELD_SIZE,
                  maxlength=DB_STRING_MAX_LENGTH)
 label = content_tag("label", "#{field.humanize}:", :for => field)
 form_field = form.text_field field, :size => size, :maxlength => maxlength
 content_tag("div", "#{label} #{form_field}", :class => "form_row")
end    

控制器的一部分:

def edit
 @user = current_user
 @user.profile ||= Profile.new
 @profile = @user.profile
 if param_posted?(:profile)
   if @user.profile.update_attributes(params[:profile])
    flash[:notice] = "Changes saved."
    redirect_to :controller => "users", :action => "index"
   end
  end
end

1 个答案:

答案 0 :(得分:1)

text_field_for帮助器中,您需要声明作为助手生成的DIV标记内容传递的字符串是安全的,因此不应对其进行清理。这是通过html_safe完成的。

def text_field_for(form, field,
  size =HTML_TEXT_FIELD_SIZE,
  maxlength =DB_STRING_MAX_LENGTH)
  label = content_tag("label", "#{field.humanize}:", :for => field)
  form_field = form.text_field field, :size => size, :maxlength => maxlength
  content_tag("div", "#{label} #{form_field}".html_safe, :class => "form_row")
end