Rails アプリケーションのフォームで AJAX を動作させようとしていますが、約 75% 進んでいます。人がアクティビティを作成し、そのアクティビティにスキルをタグ付けできるフォームがあります。フォーム内で新しいスキルを作成できる機能を提供したいと考えています。「Create a New Skill」リンクをフォームに置き換えて、レコードを問題なく保存できます。私の問題は、レコードが保存された後、レールがフォームのあるページに戻るのではなく、ホームページにリダイレクトし続けることです。ユーザーが典型的なHTMLフォームを介してスキルを作成していた場合、リダイレクトは通常の動作です。
フォームに変わる新しいスキルを作成するための私のページのリンク:
<%= link_to "Create A New Skill", new_skill_path, :id => "new-skill-link", remote: true %>
リンクを置き換える新しいスキルフォーム:
<%= form_for Skill.new, :remote => true do |f| %>
<%= f.text_field :description %>
<%= f.submit "Save", :class => 'btn-large btn-primary' %>
<% end %>
私のスキルコントローラー (New メソッドと Create メソッド):
def new
@skill = Skill.new
@tags = current_user.tags
respond_to do |format|
format.html
format.js
end
end
def create
@skill = current_user.skills.new(params[:skill])
params[:skill][:tag_ids] ||= []
respond_to do |format|
if @skill.save
flash[:success] = "Skill was successfully created!"
format.html { redirect_to home_page_url }
format.js { render action: "create" }
else
flash.now[:error] = "There was an error saving your skill."
format.html { render action: "new" }
format.js { render action: "new" }
end
end
end
私のnew.js.erb:
$("#new-skill-link").hide().after('<%= j render("skills/remote_form") %>');
私のcreate.js.erb:
$("#new-skill").remove();
$("#new-skill-link").show();
$(".skill-list ul").append('<%= j render(@skill) %>');
Rails はリクエストを HTML として解釈しているようで、HTML ページで応答しています。:format => :js
スキルフォームに追加しようとしましたが、Rails はブラウザで JavaScript を解釈せずにレンダリングしただけです。
Web サーバーのログを見ると、エラーは表示されません。私は得る:
Started POST "/skills" for 127.0.0.1 at 2012-12-31 20:02:16 -0700
Processing by SkillsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"xxxxx", "skill"=>{"description"=>"Example Skill"}, "commit"=>"Save"}
User Load (62.8ms) SELECT "users".* FROM "users" WHERE "users"."remember_token" = 'xxxxx' LIMIT 1
(0.1ms) begin transaction
SQL (15.4ms) INSERT INTO "skills" ("created_at", "description", "updated_at", "user_id") VALUES (?, ?, ?, ?) [["created_at", Tue, 01 Jan 2013 03:02:16 UTC +00:00], ["description", "Example Skill"], ["updated_at", Tue, 01 Jan 2013 03:02:16 UTC +00:00], ["user_id", 1]]
(1.4ms) commit transaction
Redirected to http://localhost:3000/home_page
Completed 302 Found in 96ms (ActiveRecord: 79.7ms)
何かご意見は?