The Haml form tag includes nothing on Rails 3

2019-07-24 00:21发布

问题:

I think there may be a bug in Haml? Or something I missed The form tag supposed to enclose the input element, but it doesn't.

<form accept-charset="UTF-8" action="/remote_focus/kill_running_task" data-remote="true" method="get"></form>
            <tr>
              <td>...

Where I expect it is

<form accept-charset="UTF-8" action="/remote_focus/kill_running_task" data-remote="true" method="get">
                <tr>
                  <td>...
</form>

This is my haml file, iterate each task from an array,

  - @running_tasks.each do |running_task|        
    = form_tag kill_running_task_remote_focus_path, :method => :get, remote: true do
      %tr
        %td
          = running_task[:user]
        %td 
          = running_task[:ip]
        %td 
          = running_task[:time]
        %td 
          = running_task[:pid]
          = hidden_field_tag :task, running_task[:pid]
        %td
          = submit_tag "Kill This Task" ,:class=> "btn btn-primary autotest"

回答1:

Other than form, a simpler tag is button_to or link_to. UJS will convert those with remote: true and method: :delete to form automatically. So

// Remove the previous form_tag
%td
  = button_to kill_running_task_remote_focus_path, :method => :delete, remote: true


回答2:

Try to remove all the tr td and lets try once.