2011-02-22 2 views
1

usehipster.com 또는 fork.ly에서 볼 수있는 것처럼 "바이러스 성"사전 베타 초대 신청서를 작성하려고합니다.레일즈 - id를 토큰으로 설정하는 방법 (usehipster와 같은 베타 사전 신청)

기본적으로, 미래 테스터 :

1.) 자신의 이메일 입력

2) 이와 같은 링크를받을 전망 (A coming_soon 페이지)

3)로 리디렉션됩니다 : "http : // localhost : 3000 /? referenced_to = 테스터의 초대 ID"이보기에 표시됩니다.

4.)와 동일한 링크가있는 이메일을 수신하십시오.

잘 이해하면 "테스터의 초대 ID"는 어떤 테스터로부터 초대장이 왔는지 추적 할 수있는 토큰 역할을합니다.

내 질문 :

1.) 어떻게 링크 ID를 생성 할 수 있습니까? before_create를 사용할 수 없습니다. 테스터를 등록 할 때 초대장 ID가 아직 설정되지 않았기 때문입니다. 초대 컨트롤러보기/초대/coming_soon.html.erb에서

def coming_soon 
    @invitation = Invitation.last 
end 

... 
Copy and paste the following link to share wherever you want!</p> 

<%= text_field_tag 'code', root_url + "?reffered_by=" + @invitation.id.to_s %> 

당신이 그들과 같이 할 생각 하는가에

:

나는이 시도?

2.) 왜 링크에 물음표가 있습니까? (또는 무엇인가? reffered_by = 왜 root_url /@invitation.id.to_s가 아닌가?) 이것은 루트와 관련된 것입니까? 그것을 얻는 방법인가?

도움 주셔서 감사합니다.

답변

1

질문 2에 답변 드리겠습니다 :

? url은 매개 변수를 전달하는 방법입니다. GET 메소드를 사용하는 양식은 url에 매개 변수를 전달하기 위해이 유형의 appending을 사용합니다. URL? reffered_by = somevalue는 값이 somevalue 인 referenced_by 매개 변수를 전달합니다. 이제 컨트롤러에서이 값을 원하면 params[:referred_by]을 호출하면 값이 "somevalue"가됩니다. 둘 이상의 매개 변수를 전달하려는 경우 &을 사용하여 전달할 수 있습니다. [: referred_by] params가 예를 들어,

"#{root_url}?referred_by=#{@invitation.id}&referred_time_stamp=#{Time.now.strftime(%Y%m%d%H%M%S)}" 

이제 우리 PARAMS으로 제어기에 이러한 파라미터에 액세스 할 수 [: referred_time_stamp].

routes.rb에 정의 된 경로 나 리소스가없는 경우 "#{root_url}/#{@invitation.id}"을 사용하여 id와 같은 매개 변수를 전달할 수 없습니다. 예를 들어, 당신은

map.connect ':controller/:action/:id' 

가 routes.rb에서, 다음 마지막 슬래시 뒤에 오는 부분 이해 매개 변수 ID의 값으로 정의하고 우리는 컨트롤러 params[:id]로 얻을 것이다.

관련 문제