【问题标题】:Rails form_tag not respondingRails form_tag 没有响应
【发布时间】:2014-03-19 23:59:17
【问题描述】:

我的表单由于某种原因没有响应,我被卡住了!

我已关注 RailsCast here,但它基于旧版本的 rails。

这是我的视图代码,很确定这就是我的麻烦所在:

<%= form_tag publish_selected_posts_path do %>
    <% @posts_inactive.each do |post| %>
      <tr>
        <td><%= check_box_tag "post_ids[]", post.id %></td>
        <td><%= link_to post.title, post_path(post) %></td>
        <td><%= post.created_at.to_s(:short) %></td>
        <td><%= post.user.email %></td>
        <td><%= post.user.email %></td>
        <td><%= post.state.name %></td>
        <td><%= post.city.name %></td>
        <td><%= post.expire_date.to_s(:short) %></td>
        <td>
            <div>
                <div class="dark" style="float:left;">
                  <%= link_to 'Edit', edit_post_path(post), :class => 'btn btn-mini dark' %> &nbsp;
                </div>
                <div style="float:left;">
                  <%= button_to 'Delete', post_path(post), :method => :delete, :confirm => 'Are you sure?', :class => 'btn btn-mini btn-danger' %>
                </div>
                <div class="dark" style="float:left;">
                     &nbsp; <%= link_to publish_link_text(post), 
                                toggle_publish_post_path(post), 
                                :class => 'btn btn-mini dark' %>
                </div>
                <div style="clear:both;">
                </div>
            </div>
        </td>
      </tr>
    <% end %>   

     </tbody>
    </table>
  <%= submit_tag "Publish Selected", :class => 'btn btn-mini dark' %>
<% end %>   

当我按下提交按钮时,什么都没有发生...据我所知,一切都应该基于 rails cast,但它只是不起作用。

这是此表单输出的 HTML:

    <form accept-charset="UTF-8" action="/dashboard/posts" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="authenticity_token" type="hidden" value="pwTuSXar01OT26FHf1bMyxKsSQ7MHWn/u3BQ9PmffS4=" /></div>
          <tr>
            <td><input id="post_ids_" name="post_ids[]" type="checkbox" value="29" /></td>
            <td><a href="/posts/29">Another Post</a></td>
            <td>30 Nov 05:03</td>
            <td>guitarjoe02@email.com</td>
            <td>guitarjoe02@email.com</td>
            <td>Alaska</td>
            <td>Anchorage</td>
            <td>28 Jan</td>
            <td>
                <div>
                    <div class="dark" style="float:left;">
                      <a href="/posts/29/edit" class="btn btn-mini dark">Edit</a> &nbsp;
                    </div>
                    <div style="float:left;">
                      <form action="/posts/29" class="button_to" method="post"><div><input name="_method" type="hidden" value="delete" /><input class="btn btn-mini btn-danger" data-confirm="Are you sure?" type="submit" value="Delete" /><input name="authenticity_token" type="hidden" value="pwTuSXar01OT26FHf1bMyxKsSQ7MHWn/u3BQ9PmffS4=" /></div></form>
                    </div>
                    <div class="dark" style="float:left;">
                         &nbsp; <a href="/posts/29/toggle_publish" class="btn btn-mini dark">Publish</a>
                    </div>
                    <div style="clear:both;">
                    </div>
                </div>
            </td>
          </tr>
          <tr>
            <td><input id="post_ids_" name="post_ids[]" type="checkbox" value="28" /></td>
            <td><a href="/posts/28">New Post...</a></td>
            <td>16 Nov 01:09</td>
            <td>guitarjoe02@email.com</td>
            <td>guitarjoe02@email.com</td>
            <td>Alaska</td>
            <td>Anchorage</td>
            <td>14 Jan</td>
            <td>
                <div>
                    <div class="dark" style="float:left;">
                      <a href="/posts/28/edit" class="btn btn-mini dark">Edit</a> &nbsp;
                    </div>
                    <div style="float:left;">
                      <form action="/posts/28" class="button_to" method="post"><div><input name="_method" type="hidden" value="delete" /><input class="btn btn-mini btn-danger" data-confirm="Are you sure?" type="submit" value="Delete" /><input name="authenticity_token" type="hidden" value="pwTuSXar01OT26FHf1bMyxKsSQ7MHWn/u3BQ9PmffS4=" /></div></form>
                    </div>
                    <div class="dark" style="float:left;">
                         &nbsp; <a href="/posts/28/toggle_publish" class="btn btn-mini dark">Publish</a>
                    </div>
                    <div style="clear:both;">
                    </div>
                </div>
            </td>
          </tr>

  </tbody>
</table>
  <input name="commit" type="submit" value="Save changes" /> 
</form> 

有什么想法吗?

【问题讨论】:

  • 共享服务器日志,供您提交表单时使用。
  • 是的,正如Kirti所说,检查服务器并验证表单是否正在发布;如果有错误,请继续并发布它们。还要检查服务器端(在您的开发工具中),看看浏览器是否报告了任何错误。
  • 它甚至没有命中日志。我按下按钮,页面甚至没有重新加载。这就是为什么我认为它一定与我的语法有关......
  • 查看此表单输出的 HTML 可能会有所帮助。

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1


【解决方案1】:

啊哈!罪魁祸首是你的button_to 电话。查看the documentation for button_to。正如您将看到的,该助手将自己包装在一个迷你 HTML 表单中。在您的情况下,它在表单中创建一个表单,即invalid

您应该能够使用link_to 来执行完全相同的操作。所以你的button_to 最终会是这样的:

<%= link_to 'Delete', post_path(post), :method => :delete, :confirm => 'Are you sure?', :class => 'btn btn-mini btn-danger' %>

试试看,如果有什么不同,请告诉我。

【讨论】:

  • 做到了...一切正常。谢谢!
【解决方案2】:

您的提交标签似乎不在表单内。这将使它实际上不提交表单。

编辑:我想我可能是错的......但你的代码的隐蔽缩进让人很难分辨。您能否清理缩进以使 do/ends(以及它们包含的代码)更清晰且一目了然?

【讨论】:

  • 我刚刚更新了格式...我认为这更清楚。这更有意义吗?
  • 是的,这样更好:)
猜你喜欢
  • 1970-01-01
  • 2011-04-30
  • 2014-01-09
  • 1970-01-01
  • 1970-01-01
  • 2013-12-12
  • 2014-04-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多