2012-01-24 2 views
0

아직 레일스 곡선을 배우는 편이 가파르므로이 질문의 단순한 성격을 용서해 주시길 바랍니다. 그러나 Google은 매우 도움이되지 않습니다.이메일 템플릿의 변수에 액세스하는 레일

내 문제는 이것입니다. 우편 발송자를 호출하는 컨트롤러가 있습니다. (아래의 Code snippet) 내가 넘겨 줄 수없는 문제는 rhtml 페이지의 값에 어떻게 접근하려고해도 오류가 발생하거나 아무 것도 얻지 못한다는 것입니다.

은 (@person가 잘 작동하고 @item이 작동하지 않는 것입니다.) 컨트롤러 조각입니다

if params[:id] == 'username' 
    item_value = @user[:login] 
elsif params[:id] == 'password' 
    item_value = @user[:new_password] 
end 

@item = { 'name' => params[:id], 'val' => item_value } 
ApplicantMailer.deliver_forgot(@person.email, @person, @item) 

이것은 메일러 방법 조각입니다 :

def forgot(recipient, person, item, sent_at = Time.now) 
    @subject   = 'Site Password Retrieval' 
    @body['person'] = person 
    @body['item'] = item 
    @recipients  = '[email protected]' 
    @from   = CONTACT_EMAIL 
    @sent_on   = sent_at 
    @headers   = {} 
    logger.debug @body.to_yaml 
end 

이것은 RHTML 조각입니다 :

Dear <%= @person.first_name %>, 

You are receiving this email because you or someone else has used the lost <%= @item[:name] %> page from the login page. 

Your <%= @item[:name] %> for your account is: <%= @item[:val] %> 

그래서, 나는 @i를 사용하는 경우 내가는 @item의 값에 액세스하려고 할 때, 말했듯 tem.name 그것은 누락 된 메소드 오류를 던지고 위에 나열된 버전을 사용하면 아무 것도 표시되지 않습니다.

내가 해시로 작업하고 있다는 것을 알고 있습니다. 여기에 표시된 것처럼 키에 액세스하려고 시도하는 것이 올바른 방법이라고 생각했습니다. 분명히, 나는 여기서 뭔가를 놓치고있다.

누군가 나를 올바른 방향으로 안내 할 수 있습니까? 감사!

+0

항목 [: 이름] 및 항목 [: 값]을 (를) 시도했지만 누락 된 방법 오류가 발생했습니다. – Skittles

답변

1

해시 및 기호를 만들 때 문자열을 사용할 때 액세스하고 있습니다.

구별된다
@item = { :name => params[:id], :val => item_value } 

:

@item = { 'name' => params[:id], 'val' => item_value } 

당신은 다음과 irb이 시도 할 수

는 다음과 같은합니다.

hash = {"a" => "val1", :a => "val2", "b" => "val3"} 
hash["a"] => "val1" 
hash[:a] => "val2" 
hash["b"] => "val3" 
hash[:b] => nil 
+0

와우! 나는 그것이 단순해야만한다는 것을 알았다. 조금 당혹 스럽지만 답변과 Rails에 대한 학습에 감사드립니다. 고슬러, 고 즐러! 대단히 감사합니다! – Skittles

+0

@Skittles 많은 사람들이 다음 블로그 게시물을 유용하다고 생각합니다. http://www.robertsosinski.com/2009/01/11/the-difference-between-ruby-symbols-and-strings/ – Gazler

+0

감사합니다. Gazler! 당신은 의사가 지시 한 것과 정확히 일치했습니다. :) – Skittles

관련 문제