首页 > 解决方案 > haml 中的 form_tag 创建没有输入的表单

问题描述

该应用程序是 rails 3。在 js 响应之后,以下代码段将在 div 中呈现:

  = form_tag("/admin/limits/change/#{user.id}", :remote => "true") do
    %th{:scope => "row"}= index+1
    %td= user.email
    %td.text-center= user.domain || "null"
    %td.text-center
      = check_box :details, 'limit', { :checked => (user.details && user.details.limit.eql?("hard")) }, 'hard', 'soft'
    %td.text-center
      = button_tag 'Set limit' , class: 'btn' , type: :submit

问题是表格似乎忽略了do声明。后面缩进的内容都不包含在其中。这只是一个没有提交的空表单。以下所有行,包括check_boxbutton_tag,都呈现在外部。

<form accept-charset="UTF-8" action="/admin/limits/change/5" data-remote="true" method="post"></form>

尝试使用submit_tag而不是button_tag但不能解决问题。既不加form_tag .. do |f|

标签: ruby-on-railsrubyhaml

解决方案


我认为问题是你应该使用 check_box_tag 因为它是一个 form_tag,也使用 do 很好,你还需要在 %th 内缩进 %td 标签

 = form_tag("/admin/limits/change/#{user.id}", :remote => "true") do
   %th{:scope => "row"}= index+1
     %td= user.email
     %td.text-center= user.domain || "null"
     %td.text-center= check_box_tag :details, 'limit', { :checked = (user.details && user.details.limit.eql?("hard")) }, 'hard', 'soft'
     %td.text-center= button_tag 'Set limit' , class: 'btn' , type: :submit

推荐阅读