我有一个html.erb文件,在使用以下内容时不会呈现任何内容:
<% form_for :profile do |form| %>
使用时(注意“=”符号):
<%= form_for :profile do |form| %>
这是html的输出:
部分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
答案 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