2011-10-27 2 views
0

레일스가 내 리디렉션을 무시하고 있습니다.rails이 내 리디렉션을 무시합니다.

사용 사례 :

  1. 사용자는 자신의 계정을 탐색하고
  2. 응용 프로그램은이
  3. 사용자가 구독을 취소 취소 자신의 현재 가입 및 옵션을 나열 자신의 가입 상태를 표시하는 옵션을 선택
  4. 앱이 구독 기록을 업데이트하고 사용자를 구독 동작으로 다시 리디렉션해야 함

    ->하지만 레일스는이 마지막 단계를 무시합니다 ... 내가 뭘 잘못하고 있는지 아이디어가 있습니까?

경로

map.resources :users, ..., :member => { ..., :subscriptions => :get, :subscribe => :post, :unsubscribe => :put} 

컨트롤러 :

def subscriptions 
    @tradesman = User.find_by_id(params[:id]) 
    @subscription = @tradesman.current_subscription || Subscription.new 
    @all_subscriptions = Subscription.find(:all) 
    end 

    def subscribe 
    @tradesman = User.find_by_id(params[:id])  
    @subscription = current_user.subscriptions.build(params[:subscription]) 
    @subscription.update_attributes(:started_at => Time.zone.now) 
    @subscription.save 
    redirect_to :action => 'subscriptions', :id => @tradesman.id 
    end 

    def unsubscribe 
    @tradesman = User.find_by_id(params[:id]) 
    @subscription = @tradesman.current_subscription 
    @subscription.update_attributes(:ended_at => Time.zone.now) 
    @subscription.save 
    redirect_to :action => 'subscriptions', :id => @tradesman.id 
    end 

보기 :

<div class = 'wrapper'> 
    <%= render :partial => "my_account_leftbar" %> 
    <% form_for @subscription, :url => subscribe_user_path(current_user) do |f| %> 

     <% @all_subscriptions.each do |subscription| %> 
     <div class="field">Start: <%= subscription.started_at %></div><br><br> 
     <% end %> 

     <% if @subscription.new_record? %> 
     <div class="field"> 
      <%= f.check_box :subscription_type %> 
      <div class="actions"> 
      <%= f.submit "Subscribe", :class => "button mr8" %> 
      </div> 
     </div> 
     <% else -%>  
     <%= f.check_box :subscription_type, :value => @subscription.subscription_type, :disabled => true %> 

      <% form_for @subscription, :url => unsubscribe_user_path(current_user) do |f| %> 
      <div class="actions"> 
      <%= f.submit "Unsubscribe", :class => "button mr8" %> 
      </div> 
      <% end %> 

     <% end %> 

    <% end %> 
</div> 
+0

내가 중첩 된 뷰에 버그 발견 '구독'양식의 '구독 취소'양식 - 이해가 안되는 것. 내가보기를 재정렬했습니다 (이 두 가지 형식은 'if'부분과 'else'부분으로 구분됩니다.) 이제 제대로 작동합니다. – hebe

+0

stackoverflows가 허용하는대로 새보기를 게시합니다 .. – hebe

답변

0

사용 redirect_to 대신 render (당신의 unsubscribe 행동 마지막 메소드 호출) .

+0

죄송합니다, 실제로 redirect_to 시도 (및 작동하지 않았습니다.) 또한 이전에 렌더링 시도 (중 하나를 작동하지 않습니다) 있지만 깜박 그래서 : redirect_to가 작동하지 않습니다. – hebe

0

'구독'양식의 '구독 취소'양식을 중첩 한보기에서 버그가 발견되었습니다.

이 나는 ​​'경우'일부 내보기 (분리 된 두 형태를 재 배열하고 '다른'부분에, 다른 하나는 지금은 잘 작동 :.

<div class = 'wrapper'> 
    <%= render :partial => "my_account_leftbar" %> 
    <% @all_subscriptions.each do |subscription| %> 
    <div class="field">Start: <%= subscription.started_at %></div><br><br> 
    <% end %> 

    <% if @subscription.new_record? %> 
    <% form_for @subscription, :url => subscribe_user_path(current_user) do |f| %> 
     <div class="field"> 
      <%= f.check_box :subscription_type %> 
      <div class="actions"> 
      <%= f.submit "Subscribe", :class => "button mr8" %> 
      </div> 
     </div> 
    <% end %> 
    <% else -%> 
    <% form_for @subscription, :url => unsubscribe_user_path(current_user) do |f| %> 
    <%= f.check_box :subscription_type, :value => @subscription.subscription_type, :disabled => true %> 
    <div class="actions"> 
     <%= f.submit "Unsubscribe", :class => "button mr8" %> 
    </div> 
    <% end %> 
    <% end %> 
</div> 
관련 문제