2013-10-09 2 views
0

저는 통과하려고하는 매개 변수가 메소드로 해석되는 FormTagHelper를 사용하여이 문제를 해결하는 데 어려움을 겪고 있습니다. 따라서 메소드가 없습니다. 여기 FormTagHelper NoMethodError

뷰입니다 :

<%= form_tag update_user_email_admin_user_path do %> 
<%= text_field :user, :email, placeholder: 'E-mail or user id' %> 
<%= text_field :user, :new_email, placeholder: 'New e-mail' %> 
<%= submit_tag "Update email", class: 'btn-1 btn-round btn-size-2' %> 
<% end %> 

그리고 여기 (참조 용) 컨트롤러 액션의 :

def update_user_email 
    user_check = User.find_by_email(params[:user][:new_email].downcase.strip) 

    if user_check.blank? 
    @user.email = params[:user][:new_email].downcase.strip 
    @user.save 
    flash[:notice] = "Email updated" 
    else 
    flash[:alert] = "This email is already being used by someone else!" 
    end 
end 

을 내가 개발에서 페이지를로드 할 때, 이것은 어떤 방법 오류입니다 :

NoMethodError at /admin/users/195455 undefined method 'new_email' for #<User:0x007f9198c3f560>

,

거의 동일한 구문으로 여러 다른 FormTagHelpers를 사용했기 때문에 혼란 스럽습니다.

눈에 여분의 세트가 더 좋습니까? 나는 사전에 많은 감사를 n00b 해요!

답변

1

User 값을 new_email 필드에 저장하려고한다고 가정하기 때문에 사용자의 users 테이블에는 존재하지 않습니다. 이 종류의 양식에는 text_field_tag을 사용하십시오. 당신은 docs 여기에서 찾을 수 있습니다

<%= form_tag update_user_email_admin_user_path do %> 
<%= text_field_tag 'email', nil , placeholder: 'E-mail or user id' %> 
<%= text_field_tag 'new_email', nil , placeholder: 'New e-mail' %> 
<%= submit_tag "Update email", class: 'btn-1 btn-round btn-size-2' %> 
<% end %> 

는 희망 그 것이다 help.Thanks