2011-04-27 2 views
0

간단한 질문이 무엇인지에 대한 답변을 찾고 있습니다. 누구든지 올바른 방향으로 나를 가리킬 수 있습니까, 아니면 적어도 내가 무엇을 찾고 있어야하는지 말해 줄 수 있습니까?Rails3 메일러의 경로/URL 경로에 변수 추가

은 내가 Rails3 베타 시스템에게 라 라이언 베이츠 초대 구현하고있어 - http://railscasts.com/episodes/124-beta-invitations

메일러는 상대 링크를 생성합니다. 호스트 경로를 준비하는 방법은 무엇입니까? (이미 config.action_mailer.default_url_options가 development.rb에 설정되어 있습니다.)

- 내 경로 파일의 관련 비트.

devise_for :users, :path_prefix => 'registration', :controllers => {:registrations => 'users/registrations'} do 
    get "registration/users/sign_up/:invitation_token" => "users/registrations#new" 
    end 

레일스의 업데이트를 반영하고 Devise와 잘 어울리는 부분을 약간 조정했습니다. 컨트롤러는 이제이 같은이

class InvitationsController < ApplicationController 
    def new 
    @invitation = Invitation.new 
    @title = "Invite a friend" 
    end 

    def create 
    @invitation = Invitation.new(params[:invitation]) 
    @invitation.sender = current_user 
    if @invitation.save 
     if user_signed_in? 
      Mailer.invitation(@invitation, new_user_registration_path(@invitation.token)).deliver 
      redirect_to root_url, :notice => "Thank you, your friend will receive their invitation soon." 
     else 
      redirect_to root_url, :notice => "Thank you, we'll let you know when the next batch of invites are availale." 
     end 
    else 
     if current_user.invitation_limit > 0 
      render :action => 'new', :alert => "Sorry, there was a problem! Please try a again." 
     else 
      redirect_to root_url, :alert => "Sorry, you don't have any invitations left. Please wait until we issue more." 
     end 

    end 
    end 
end 

그리고 우편물과 같습니다

class Mailer < ActionMailer::Base 

    def invitation(invitation, sign_up) 

    subject  'Invitation' 
    recipients invitation.recipient_email 
    @greeting = "Hi" 
    @invitation = invitation 
    @signup_url = sign_up 
    @sender = invitation.sender_id 
    invitation.update_attribute(:send_at, Time.now)  
    end 
end 

나는 이런 일이 왜 더 잘 이해 될 수 있도록하는 어떤 포인터를 주셔서 감사합니다.

감사합니다.

답변

1

첫 번째 문제는 new_user_registration_path 대신 new_user_registration_url이 필요하다는 것입니다. URL = 절대, 경로 = 상대.

두 번째 문제에 대한 도움을 받으려면 경로를 제시해야 할 수도 있습니다. 매개 변수가 형식으로 처리되고있는 것 같습니다. 아마도 사용자 정의 매핑이 필요합니까? 같은 뭔가 : 당신이 default_url_options을 설정 한 이후

match '/users/sign_up/:token' => 'users#sign_up', :as => :new_user_registration 

, 난 당신이 아니라 컨트롤러에서 그것을 전달하는 대신, 메일러보기에서 URL 도우미를 호출 할 수 있기를 기대합니다.

+0

포인터에 감사드립니다. _url이 트릭을했습니다. 원래 질문에 관련 경로를 추가했습니다. 제공 할 수있는 조언을 더 많이 생각해보십시오. 또한, 이것에 관한 좋은 정보 출처는 어디입니까? 아마도 API 문서의 잘못된 부분을보고있을 것입니다. –

+0

저는 두 가지 질문을했습니다. 첫 번째 질문에 대한 답변을 수락하고 두 번째 질문을 자체 질문으로 나눌 것입니다. 당신이 제안 할 수있는 충고를 환영합니다. http://stackoverflow.com/questions/5830985/formatting-routes-urls-in-rails-with-devise –