2013-07-09 33 views
0

我有一个rails应用程序,我想通过模态弹出窗口做一个评论功能。如何在按钮按下时调用Comment模型的新方法,以便在绘制窗体时@comment不为零。这里是我的代码:如何在显示引导模式的按钮上调用控制器方法?

<div class='well well-backdrop'> 
<a href="#commentModal" role="button" class="btn btn-mini btn-custom-primary" data-toggle="modal">Post Comment</a> 
</div> 

<div id="commentModal" class="modal hide fade"> 
    <div class="modal-header"> 
    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button> 
    <h3>Modal header</h3> 
    </div> 
    <div class="modal-body"> 
    <%= form_for(@comment) do |f| %> 
    <% if @comment.errors.any? %> 
    <div id="error_explanation"> 
     <h2><%= pluralize(@comment.errors.count, "error") %> prohibited this comment from being saved:</h2> 

     <ul> 
     <% @comment.errors.full_messages.each do |msg| %> 
     <li><%= msg %></li> 
     <% end %> 
     </ul> 
    </div> 
    <% end %> 

    <div class="field"> 
    <%= f.label :user_id %><br /> 
    <%= f.number_field :user_id %> 
    </div> 
    <div class="field"> 
    <%= f.label :comment %><br /> 
    <%= f.text_field :comment %> 
    </div> 
    <div class="field"> 
    <%= f.hidden_field :illustrationId, :value => @illustration.id %> 
    </div> 
    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 
    </div> 
    <div class="modal-footer"> 
    <a href="#" class="btn btn-mini">Cancel</a> 
    <a href="#" class="btn btn-mini btn-custom-primary">Submit</a> 
    </div> 
</div> 

我重新格式化我的代码,这和提交不起作用:

<div class='well well-backdrop'> 
<a href="#commentModal" role="button" class="btn btn-mini btn-custom-primary" data-toggle="modal">Post Comment</a> 
</div> 

<div id="commentModal" class="modal hide fade"> 
    <div class="modal-body"> 
    <%= form_for(Comment.new, remote: true, html: {"data-type" => :json}, :validate => true) do |f| %> 
    <%= f.hidden_field(:illustrationId, :value => @illustration.id) %> 
    <%= f.text_area(:comment, :id => "comment_message") %> 
    <%= f.submit "Submit", :class => 'btn btn-custom-primary' %> 
    <% end %> 

    </div> 
</div> 

这里是发生了什么事在我的js日志,似乎有一个问题加载。 ./注释直到我手动执行。然后,我得到一个不同的错误(第3和第4行):

Failed to load resource: the server responded with a status of 500 (Internal Server Error) http://general-rails-13774.use1.actionbox.io:3000/comments 
Failed to load resource: the server responded with a status of 500 (Internal Server Error) http://general-rails-13774.use1.actionbox.io:3000/comments 
POST http://general-rails-13774.use1.actionbox.io:3000/comments 500 (Internal Server Error) jquery.js:8527 
POST http://general-rails-13774.use1.actionbox.io:3000/comments 500 (Internal Server Error) application.js:22 
+0

你是指'Comment'模型的新方法还是'Comment'控制器的新方法? – vee

回答

1

我在一个模式了这一点,它工作得很好:

<%= form_for(Order.new, remote: true, html: {"data-type" => :json}, :validate => true) do |f| %> 
    <%= f.check_box(:user_accepts, :class => 'acceptance') %> 
    <%= f.hidden_field(:quantity, :value => p.quantity) %> 
    <%= f.hidden_field(:price, :value => p.price) %> 
    <%= f.submit "Confirm", :class => 'btn btn-primary orderconfirm' %> 
<% end %> 

有了这个CoffeeScript的:

jQuery -> 
    $("form.new_order").on "ajax:success", (event, data, status, xhr) -> 
    $('.modal').modal('hide') 
    window.location.replace("/"); 
+0

我根据您的建议重新格式化。该页面在加载时不会中断,但该表单不会提交,并且js控制台消息无效。你有没有看到任何问题? –

+0

也许这个编辑会帮助你。 –

+0

我实现了表单,它发布了评论,但是是创建重复的,我不明白为什么。我在这里创建了一个新问题:http://stackoverflow.com/questions/17631399/bootstrap-modal-form-is-committing-twice –

相关问题