2010-04-26 13 views
12

उम्मीद है कि मैं इसे अच्छी तरह से समझा सकता हूं, लेकिन अगर अधिक जानकारी की आवश्यकता है तो कृपया मुझे बताएं!फ़िल्टर श्रृंखला [: login_required] rendered_or_redirected

मैं एक ऐसा फॉर्म बना रहा हूं जहां कोई उपयोगकर्ता "घटना" बना सके।

  • belongs_to: ग्राहक (ग्राहक has_many घटनाओं)
  • belongs_to: उपयोगकर्ता (उपयोगकर्ता has_many घटनाओं)
  • has_one: incident_status (incident_status घटना के अंतर्गत आता है)

इस घटना के बाद रिश्ते हैं फॉर्म उपयोगकर्ता को घटना (उपयोगकर्ता का चयन करें) को घटना सौंपने की अनुमति देता है और फिर घटना की स्थिति का चयन करता है। घटना ग्राहक में घोंसला है।

हालांकि, मैं हो रही है सर्वर लॉग में निम्नलिखित:

Processing IncidentsController#create (for 127.0.0.1 at 2010-04-26 10:41:33) [POST] 
Parameters: {"commit"=>"Create", "action"=>"create", 
"authenticity_token"=>"YhW++vd/dnLoNV/DSl1DULcaWq/RwP7jvLOVx9jQblA=", 
"customer_id"=>"4", "controller"=>"incidents", "incident"=>{"title"=>"Some Bad Incident", 
"incident_status_id"=>"1", "user_id"=>"2", "other_name"=>"SS01-042310-001"}} 

User Load (0.3ms) SELECT * FROM "users" WHERE ("users"."id" = 2) LIMIT 1 
Redirected to http://localhost:3000/session/new 
Filter chain halted as [:login_required] rendered_or_redirected. 
Completed in 55ms (DB: 0) | 302 Found [http://localhost/customers/4/incidents] 

ऐसा लगता है कि यह, यह पहले से ही आईडी है, भले ही (जो सभी यह है उपयोगकर्ता के बारे में जानकारी इकट्ठा करने के लिए कोशिश कर रहा है मेरे लिए लग रहा है घटना को बनाने की जरूरत है), और उपयोगकर्ता को इस तरह का चयन कथन करने की अनुमति नहीं हो सकती है? मैं उलझन में हूँ।

यहां घटना नियंत्रक में प्रासंगिक (मुझे लगता है) जानकारी है।

before_filter :login_required, :get_customer 

def new 
    @incident = @customer.incidents.build 
    @users = @customer.users 
    @statuses = IncidentStatus.find(:all) 

    respond_to do |format| 
    format.html # new.html.erb 
    format.xml { render :xml => @incident } 
    end 
end 

def create 
    @incident = @customer.incidents.build(params[:incident]) 

    respond_to do |format| 
    if @incident.save 
     flash[:notice] = 'Incident was successfully created.' 
     format.html { redirect_to(@incident) } 
     format.xml { render :xml => @incident, :status => :created, :location => @incident } 
    else 
     format.html { render :action => "new" } 
     format.xml { render :xml => @incident.errors, :status => :unprocessable_entity } 
    end 
    end 
end 

बस एक एफवाईआई के रूप में, मैं restful_authentication प्लगइन का उपयोग कर रहा हूं।

तो संक्षेप में, जब मैं घटना निर्माण फॉर्म जमा करता हूं, तो यह घटना को सहेजता नहीं है क्योंकि यह रोकता है। मैं अभी भी रेल के लिए बहुत नया हूं, इसलिए इस तरह की समस्याओं का निदान करने में मेरा कौशल अभी भी बहुत बुरा है। मैं सर्कल में जा रहा हूँ। :)

किसी भी मदद के लिए अग्रिम धन्यवाद। यदि अधिक जानकारी की आवश्यकता है तो कृपया मुझे बताएं और मैं इसे संपादित कर दूंगा!

उत्तर

17

बस अपने नियंत्रक में निम्न का उपयोग करें।

before_filter :login_required, :except=>[:new, :create] 
+0

धन्यवाद। वह चाल है! – Magicked

6

या आप इस फिल्टर को छोड़ सकते हैं:

skip_before_filter :login_required, only: [:new, :create] 
+0

सराहना, अर्थात् सटीक प्रतिभा के तहत – am17torres

संबंधित मुद्दे