我正在尝试为我的 Rails 3.2.13 应用程序实现用户反馈收集系统。
在我的 _footer 部分(在 layouts/application.html.erb 文件中呈现)中,我包含了反馈表,如下所示:
布局/_footer.html.erb:
<footer class="footer dropup pull-right">
<nav>
<div id="fat-menu" class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
We'd Love Your Feedback!<b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li></li>
<div id="feedback_form">
<%= render 'feedbacks/form' %>
</div>
</ul>
</nav>
</footer>
反馈/_form.html.erb:
<% @feedback = Feedback.new %>
<%= form_for(@feedback) do |f| %>
<% if signed_in? %>
<%= f.hidden_field :user_id %>
<% end %>
<div class="feedback_text">
<%= f.text_area :text %>
</div>
<div id="submit_feedback"><%= f.submit "Submit", class: "btn btn-primary" %></div>
<% end %>
<script>
$('#submit_feedback').click(function(){
$('#feedback_form').html("<%= escape_javascript(render 'feedbacks/after_submit') %>");
});
</script>
反馈/_after_submit.html.erb:
<div id="new_feeeback">
Submit a new feedback.
</div>
<script>
$('#new_feeeback').click(function(){
$('#feedback_form').html("<%= escape_javascript(render 'feedbacks/form') %>");
});
</script>
我觉得像这样的无限循环对于我的情况是必要的,因为直到用户点击适当的位置才会触发渲染。
但是 Rails 不会让我这样做,因为我得到了
堆栈级别太深
错误。请让我知道是否有解决方法或更好的方法。将不胜感激!
这是跟踪:
模板包含的痕迹:app/views/feedbacks/_after_submit.html.erb、app/views/feedbacks/_form.html.erb、app/views/feedbacks/_after_submit.html.erb、app/views/feedbacks/_form.html .erb、app/views/feedbacks/_after_submit.html.erb、app/views/feedbacks/_form.html.erb、app/views/feedbacks/_after_submit.html.erb...等等
PS我知道标签不是最佳实践,我现在这样做只是为了更清楚地说明我的方法。