1

私のフォーム

<%= form_tag load_link_path, :remote => true, :html => { :'data-type' => 'html', :id => 'load_link_form' } do %>
<fieldset> 
    <%= url_field_tag(:url) %>
    <div class="validation-error"></div>
    <%= submit_tag %>
</fieldset>
<% end %>

私の行動

def load
  format.js 
end

私のjsビュー(load.js.erb)

alert(0);

フォームを送信すると、アラートが発生しません。コンソール出力:

Processing by LinksController#load as JS
  Parameters: {"utf8"=>"✓", "commit"=>"Save changes", "url"=>"http://www.alfajango.com/blog/rails-3-remote-links-and-forms/", "authenticity_token"=>"KWwfZH+sivCrWdlVBUPM0MBRPHzcDhmbB96ckLQ82Dg="}
  Rendered links/load.js.erb (0.4ms)
Completed 200 OK in 2822ms (Views: 9.9ms | ActiveRecord: 0.0ms)
4

1 に答える 1

3

コントローラーの先頭に追加respond_toしてから、format.js 呼び出しをrespond_withブロックでラップしてみてください。

class LinksController < ApplicationController
  respond_to :html, :js

  def load
    respond_with do |format|
      format.js
    end
  end
end

この記事を読むことをお勧めします。これは、rails3 imo を使用した ajax の最適なガイドです。

アップデート:

いくつかの小さな変更を加えた後、動作するようになりました。

Rails での ajax 呼び出しのデフォルトのメソッドは「GET」であるため、「POST」を実行する場合は、これを に含める必要があります:data-method=>"post"。また、フォーム タグから html ハッシュを削除し、data-typescriptに設定しました。以下を参照してください。

<%= form_tag load_link_path, :remote => true, :id => 'create_link_form', :data => {:type=>"script", :"method"=>"post"} do %>

また、js.erb ファイルからアラートのコメントを外す必要があるため、次のように変更します。

//alert(0);
$('#message').val('ok');

に:

alert(0);
//$('#message').val('ok');

これが役に立てば幸いです。そうでない場合はお知らせください。コードをgithubにプッシュします:)

于 2012-04-20T01:20:22.230 に答える