私は Rails アプリを持っていて、モーダル ポップアップを介してコメント機能を実行したいと考えています。Comment
ボタンを押したときにモデルの新しいメソッドを呼び出して@comment
、フォームが描画されたときに nil にならないようにするにはどうすればよいですか。これが私のコードです:
<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">×</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ログで起こっていることです。手動で行うまで../commentsの読み込みに問題があるようです。次に、別のエラーが発生します (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