私はRailsアプリケーションのためのコメントシステムを実装しようとしています。私のアプリのすべてのイベントはそれ自身のページであり、ページ上にはコメントスレッドがあります。ユーザーがajaxを使ってコメントを投稿できるようにしたい。私はRailsCast 136に従おうとしました。これは基本的に私のアプリで仕事をしたいものです。しかし、私はコメントを投稿するたびに、AJAXリクエストが通過していません、と私はエラーを受信しています:jQueryを使ったAjaxの投稿がうまくいかない
Started POST "/events/undefined" for 127.0.0.1 at 2011-07-17 00:39:16 -0400
ActionController::RoutingError (No route matches "/events/undefined"):
ここに私events_controllerの私のshowアクションのためのコードです。
def show
@event = Event.find(params[:id]) @comment = Comment.new session[:event_id] = @event.id @comments = @event.comments.reverse end
ここは、私のイベントショービューのコメントフォームのコードです。
<%= form_for(@comment, :remote => true) do |f| %> <% if signed_in? %>
<%= f.label :author %>
<% else %>
<%= f.text_field :author, :value => current_user.name %><%= f.label :author %>
<%= f.text_field :author %>
<% end %><p><%= f.label :content %><br /> <%= f.text_field :content %></p> <p><%= f.submit %></p> <% end %> </div>
ここに、私のcomments_controllerの作成アクションのコードがあります。
def create @comment = Comment.create!(params[:comment]) @comment.event_id = session[:event_id] session[:event_id] = nil flash[:success] = "Comment sent!" respond_to do |format| format.html { redirect_to @comment.event } format.js end end
ここでは、ajaxで投稿するjQueryコードを示します。これはかなり136
jQuery.ajaxSetup({ 'beforeSend': function(xhr) {xhr.setRequestHeader("Accept", "text/javascript")} })
$(document).ready(function(){ $("#commentform").submit(function(){ $.post($(this).attr("action"), $(this).serialize(), null, "script"); return false; }) })
誰が間違って行くことができるものの任意のアイデアを持っているRailsCastが概説したコードと同じですか?私はRailsとWeb開発の一般的な点で非常に新しく、これを修正する助けに感謝します。
EDIT:問題を解決して修正しました。私は本質的に私のルートを入れ子にすることに加えてvincehがレイアウトしたソリューションを実行し、それを動作させました。みんなありがとう。
本当にありがとうございましたが、 シド
ちょっとvinceh、 ありがとうございます。私はこれらのコード行を追加しましたが、同じエラーメッセージがログに表示されています。私は何かが私の作成アクションをコーディングした方法で間違っていると思う。私がsubmitをクリックすると、エラーの原因となっているurl/events/undefinedを読み込もうとします。 – Sid
私はもう少し問題があります。まず、フォームを提出すると、format.jsの代わりにformat.htmlを使用してフォームを処理し続けます(これはPOST Started "/ comments"というエラーを127.0.0.1に与えます)2011-07-17 02:51 :50 -0400 CommentsControllerによる処理#HTMLとして作成 )。 コメントが作成されると、railsはセッションハッシュからevent_idを読み取ることができず、コメントにevent_idを割り当てることができません。すべての助けをありがとう! – Sid