2010-01-11 1 views
28

사용자가 이메일에 댓글을 남기고 댓글을 달 수있는 앱을 만들고 있습니다.formtastic - 문자열 입력에 값을 미리 채우는 방법

나는 그들이 PARAM
로 이메일 ADRESS있는 링크로, 거기에서 직접 등록 할 수 있어야합니다 (같은 : <%= link_to register_path(:email => @comment.email %>) - 그래서 기존 사용자 레코드는 아직 없다.
이는 :value 옵션을 통해 form.input 필드에 값을 적용하여 수행해야합니다.

하지만 다음 코드는 작동하지 않습니다!

<%- if params[:email] -%> 
    <%= f.input :email, :required => true, :value => params[:email] %> 
<%- else -%> 
    <%= f.input :email, :required => true %> 
<%- end -%> 

나는 내 로컬 보석 formtastic rdoc 내부와 내부의 모습을 가지고 있지만에 대한 모든 옵션을 찾을 수 없습니다.

제안 사항?

답변

66

그래, 너는 옳은 대답을 모두 혼자서 가졌어! Formtastic의 rdoc은 엉망이지만 우리는 그것에 대해 연구하고 있습니다.

f.input :email, :input_html => { :value => params[:email] } 
+0

+1이 허용 된 답변보다 낫습니다. 입력 값에 뷰 도우미 (view helper) 메서드를 적용하는 것과 같은 작업을 수행하려는 경우 해당 코드는 컨트롤러가 아닌보기에 속합니다. – jdl

+0

이것은 일을했지만 value_method와 같은 것이 없어야합니다. I.E. f.input : my_date, : value_method => : 서식이 –

+0

아베, GH에 문제를 추가하십시오. –

9

때로는 쉬운 일이 그들에게 물어 당신의 마음에 와서 :

방법 : 컨트롤러가 아닌 뷰에서 일을 할!

if params[:email] 
    @user = User.new(:email => params[:email]) 
else 
    @user = User.new 
end 

죄송합니다.

+2

또는 단순히 : 순수하게보기 수준에서 만약 당신이 원하는 경우 또 다른 옵션은 당신에게 입력 태그의 HTML 속성에 직접 액세스를 제공하는 :input_html 옵션을 사용하는 것입니다'@user = User.new (: 이메일 => params [: email])'nil이면 결과는 같습니다. @user 초기화가 이메일을 설정하는 경우를 제외하고. – Leito