1

ajax/js 経由でフォームを送信しようとしています。:remote => true を設定しても、html 経由で送信されます。

<%= form_for(@message), :remote => true, do |f| %>

  <%= f.label :Note_To_Doctor %>
  <%= f.text_field :note %>
  <%= f.collection_select(:physician_id, Physician.all, :id, :physician_name )%>
<%= f.button :send, :class => 'btn btn-info' %>

<% end %>

私はこのようにそれをしたと誓うことができました。create.js.erb を作成する必要がありますか? もしそうなら、その中に何を入れるべきですか? また、応答ブロックとして作成アクション内に何を配置すればよいですか?

コントローラ:

 def create
    @message = Message.new(params[:message])

    if @message.save
      MessageMailer.paging(@message).deliver
      respond_to do |format|
         format.html { redirect_to messages_path, flash.notice = "Message was sent" }
         format.js { render "index" }
       end
    else
      @message = Message.new(params[:message])
    end
  end

index.js.erb

$("#messages").html("<%= escape_javascript render("messages") %>");
4

2 に答える 2

1

form_for を次のように置き換えるだけです。

<%= form_for(@message, :remote => true) do |f| %>
于 2013-04-16T11:58:03.910 に答える