2010-04-26 51 views
12

Hy vọng tôi có thể giải thích điều này đủ tốt, nhưng hãy cho tôi biết nếu cần thêm thông tin!Chuỗi bộ lọc bị tạm dừng khi [: login_required] rendered_or_redirected

Tôi đang tạo biểu mẫu nơi người dùng có thể tạo "sự cố". Sự kiện này có mối quan hệ sau:

  • belongs_to: khách hàng (sự cố has_many khách hàng)
  • belongs_to: hướng dẫn (cố dùng has_many)
  • has_one: incident_status (incident_status thuộc về sự cố)

Biểu mẫu cho phép người dùng gán sự cố cho người dùng (chọn biểu mẫu) và sau đó chọn trạng thái sự cố. Sự cố được lồng trong khách hàng.

Tuy nhiên, tôi nhận được những điều sau đây trong các bản ghi máy chủ:

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] 

Có vẻ với tôi như nó đang cố gắng để thu thập thông tin về người sử dụng, mặc dù nó đã có id (đó là tất cả những gì cần tạo sự cố) và người dùng có thể không được phép thực hiện câu lệnh chọn như vậy? Tôi khá bối rối.

Đây là thông tin liên quan (tôi nghĩ) trong bộ điều khiển Sự cố.

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 

Giống như một FYI, tôi đang sử dụng plugin restful_authentication.

Vì vậy, tóm lại, khi tôi gửi biểu mẫu tạo sự cố, nó không lưu sự cố vì nó dừng lại. Tôi vẫn còn rất mới để rails, vì vậy kỹ năng của tôi tại chẩn đoán các vấn đề như thế này vẫn còn rất xấu. Tôi sẽ đi vòng tròn. :)

Cảm ơn trước vì đã được trợ giúp. Vui lòng cho tôi biết nếu cần thêm thông tin và tôi sẽ chỉnh sửa nó!

Trả lời

17

Chỉ sử dụng sau trong bộ điều khiển của bạn.

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

Cảm ơn bạn. Điều đó đã làm các trick! – Magicked

6

Hoặc bạn có thể bỏ qua bộ lọc này:

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

dưới sự đánh giá cao về mặt ngữ nghĩa, chính xác về ngữ nghĩa – am17torres

Các vấn đề liên quan