2015-01-25 2 views
0

내 이벤트 컨트롤러의 새로운 및 show 작업에 문제가 있습니다. 현재 이벤트가 나열된 색인에만 액세스 할 수 있습니다. 그러나 새 이벤트를 만들고 심지어 current_users 이벤트를 표시하려고 할 때 302 리디렉션이 발생합니다. current_biz_user가 자신이 만든 이벤트를 볼 수 있도록 허용하고 공개 이벤트를 위해 새로운 이벤트를 색인에 게시 할 수 있도록 허용하려면이 문제를 해결할 수 있도록 도와주세요. 고맙습니다.컨트롤러 Rails 4의 새 작업으로 리디렉션 받기

다음은 내 경로입니다.

events GET /events(.:format)       events#index 
          POST /events(.:format)       events#create 
       new_event GET /events/new(.:format)      events#new 
        event GET /events/:id(.:format)      events#show 
          PATCH /events/:id(.:format)      events#update 
          PUT /events/:id(.:format)      events#update 



class EventsController < ApplicationController 
     before_filter :set_search 
     before_action :set_event, only: [:show, :update, :create, :new] 
     respond_to :html, :json 

     def index 
     @events = Event.all.order("created_at DESC") 
     @search = Event.search(params[:q]) 
     @events = @search.result 
     @search.build_condition if @search.conditions.empty? 
     @search.build_sort if @search.sorts.empty? 
     respond_with(@events) 
     end 

     def show 
     @event = Event.friendly.find(params[:id]) 
     @eventcreator = BizUser.find(@event.biz_user_id) 
     respond_with(@event) 
     end 

     def new 
     @event = Event.new 
     end 

     def edit 
     @event = Event.find(params[:id]) 
     end 

     def create 
     @event = Event.new(event_params) 
     @event.biz_user = current_user 

     respond_to do |format| 
      if @event.save 
      format.html { redirect_to @event, notice: 'Event was successfully created.' } 
      format.json { render :show, status: :created, location: @event } 
      else 
      format.html { render :new } 
      format.json { render json: @event.errors, status: :unprocessable_entity } 
      end 
     end 
     end 

     def update 
     respond_to do |format| 
      if @event.update(event_params) 
      format.html { redirect_to @event, notice: 'Event was successfully updated.' } 
      format.json { render :show, status: :ok, location: @event } 
      else 
      format.html { render :edit } 
      format.json { render json: @event.errors, status: :unprocessable_entity } 
      end 
     end 
     end 

     private 
     def set_event 
      @event = Event.find(params[:id]) 

     end 

     def set_search 
      @q = Event.search(params[:q]) 
     end 

     def event_params 
      params.require(:event).permit(:title, :description, :city, :state, :from_time, :to_time, :date, :eventlogo, :manager, :managerdescription, :reservation, :eventtype, :theme, :capacity, :passname, :private, :alcohol, :ticketquantity, :options, :price, :category, :biz_user_id) 
     end 
    end 
+0

'update'와'create' 메소드도 보여줄 수 있겠습니까? 기대하는 결과를 내지 못하고 정확히 무엇을하고 있습니까? 이것이 문제라고 생각하지 않지만'index' 메소드에서 @events 변수를 3 번 ​​겹쳐 쓰면 @events를 설정하는 첫 번째 줄을 삭제할 수 있습니다. 또는 둘 다 필요하면 다른 변수 이름을 사용하십시오. – sockmonk

+0

줄 3을 이벤트에서 findevents = @ search.result로 변경했습니다. 현재, 검색 엔진 메커니즘을 제공하기 위해 러스트락 보석을 사용하고 있습니다. 새로운 작업을 만들고 이벤트/색인 페이지에 액세스하는 것을 차단합니다. 즉, 이벤트 만 검색 할 수는 있지만 검색 쿼리에 아무것도 제공하지 않는 이벤트의 인덱스 페이지에 연결할 수 없습니다. 이상한. – user3646743

답변

0

변경 : 이것에

before_action :set_event, only: [:show, :update, :create, :new] 

:

또한
before_action :set_event, only: [:show, :update] 

, 당신의 before_actions을 검토합니다. 나는 모든 컨트롤러 액션에 set_search를 적용 할 필요가 없다고 생각한다.

+0

나는 before_filter : set_search를 설정했는데, [: new, : create, : edit, : update]를 제외하고는 새 이벤트를 만들려고 할 때 ransack이 여전히 문제를주고 있습니다. – user3646743

+0

before_filter : set_search 조치가 없습니다. 샅샅이 검색 엔진은 하나의 컨트롤러에서만 작동합니다. 이후, 내 navbar에 포함 된, 나는 application_controller 내부 필터를 사용해야했다. – user3646743

관련 문제