我想讓AJAX在我的Rails應用程序中的窗體上工作,並且大約有75%的方式。我有一個表格,一個人可以創建一個活動並使用技能標記該活動。我希望爲他們提供在表格中創建新技能的能力。我可以用表單替換「創建新技能」鏈接,然後保存記錄沒有任何問題。我的問題是在記錄保存後,rails會將我重定向到我的主頁,而不是返回到帶有表單的頁面。如果用戶通過典型的HTML表單創建技能,則重定向是正常行爲。Create.js.erb不顯示在Rails的AJAX中
我的頁面上的鏈接以創建一個新的技能,變成了一種形式:
<%= 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 %>
我的技能控制器(新和創建方法):
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)
有什麼想法?