2012-09-01 28 views
0

我想讓標記字段工作基於RailsCasts插曲#258,我可以提交表單就好了。當我回到我的主頁時,我的標籤沒有出現。令牌字段 - 記錄插入,然後刪除

看着我的本地機器上的服務器日誌,我可以看到...

User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."remember_token" = 'zviHK_WgeHLYUAtbKdzyfQ' LIMIT 1 
Activity Load (0.1ms) SELECT "activities".* FROM "activities" WHERE "activities"."id" = ? LIMIT 1 [["id", "6"]] 
(0.0ms) begin transaction 
Tag Load (3.1ms) SELECT "tags".* FROM "tags" WHERE "tags"."id" = ? LIMIT 1 [["id", 1]] 
Tag Load (0.1ms) SELECT "tags".* FROM "tags" INNER JOIN "activities_tags" ON "tags"."id" = "activities_tags"."tag_id" WHERE "activities_tags"."activity_id" = 6 
(0.3ms) INSERT INTO "activities_tags" ("activity_id", "tag_id") VALUES (6, 1) 
(0.2ms) DELETE FROM "activities_tags" WHERE "activities_tags"."activity_id" = 6 AND "activities_tags"."tag_id" IN (1) 
(1.6ms) commit transaction 

的「INSERT INTO‘activities_tags’......」有正確的價值觀,但是,出於某種原因,它是立即刪除記錄,我無法弄清楚這將會發揮什麼作用。

我的動態控制器:

class ActivitiesController < ApplicationController 
... 
    def update 
@activity = Activity.find(params[:id]) 
params[:activity][:tag_ids] ||= [] 

respond_to do |format| 
    if @activity.update_attributes(params[:activity]) 
    flash[:success] = "Activity was successfully updated!" 
     format.html { redirect_to master_resumes_url } 
    format.json { head :no_content } 
    else 
    format.html { render action: "edit" } 
    format.json { render json: @activity.errors, status: :unprocessable_entity } 
    end 
    end 
    end 
... 
end 

我Activity.rb:

class Activity < ActiveRecord::Base 
    attr_accessible :end_date, :organization, :position, :start_date, :user_id, 
        :tag_tokens, :tag_ids 
    attr_reader :tag_tokens 

    has_and_belongs_to_many :tags 
    belongs_to :user 

    def tag_tokens=(ids) 
temp = ids.split(",") 
self.tag_ids = temp[0] 
    end 
end 

我的活動形式:

<%= form_for(@activity) do |f| %> 
    <h4>Choose Tags</h4> 
    <%= f.label :tag_tokens, "Tags" %> 
    <%= f.text_field :tag_tokens, "data-pre" => @activity.tags.map(&:attributes).to_json %> 
     <p><%= link_to "Create A New Tag", new_tag_path %></p> 
<% end %> 

最後,我activities.js:

$(function() { 
    $("#activity_tag_tokens").tokenInput("/tags.json", { 
    crossDomain: false, 
prePopulate: $("#activity_tag_tokens").data("pre"), 
theme: "facebook", 
allowCustomEntry: true 
    }); 
}); 

有什麼想法?

回答

0

1)你有任何地方命名的before_filter?

2)您是否有:attr_accessible中命名的activities_tags?

+0

我在活動控制器中有一個before_filter,用於檢查用戶是否登錄。我認爲這沒有任何影響。你認爲這可能嗎? 我不認爲我需要:activities_tags,是嗎?這是連接表的名稱,當我使用複選框形式標記事物時,我並不需要它。 –

相關問題