@users에 대한 편집 양식이 있습니다. 뿐만 아니라 사용자 이름 : 나는로 설정 friendly_id 보석을 사용하는 내 사용자 모델에서빈 필드의 RoutingError가 friendly_id와 충돌합니다.
<%= form_for @user, :url => { :action => "update" } do |f| %>
<%= render 'shared/error_messages', :target => f.object %>
<div class="field">
<%= f.label :username %><br />
<%= f.text_field :username %>
</div>
을 사용자 이름 : 거기에서 나는 text_field 있습니다. 그래서 내 URL은 domain.com/users/ : username 대신에 : id와 같습니다.
내 응용 프로그램 레이아웃에서는 내 탐색에 @ user.username을 사용하여 프로필에 연결합니다.
저장시 my : username 필드를 비워 두는 경우를 제외하고 모두 제대로 작동합니다. 유효성 확인의 원인을 저장하지 못함.
validates :username, :presence => true, :uniqueness => { :case_sensitive => false }, :length => { :maximum => 50 }
"수정"을 다시 시도합니다. 그러나 "편집"을 렌더링하기 위해서는 네비게이션 바에 링크를 생성하기위한 사용자 이름이 필요합니다. 그리고 분명히 username => ""으로 전달되었지만, 저장에 실패했기 때문에 적절한 검증이 제대로 이루어 졌음에도 불구하고 말입니다.
def update
@user = current_user
if @user.update_attributes(params[:user])
flash[:success] = "Account updated."
redirect_to :back
else
@title = "Edit"
render "edit"
end
끝
그래서 나는 RoutingError로 끝날 :
No route matches {:action=>"show", :controller=>"users", :id=>#<User id: 6, username: "", persistence_token: "c2f2545659c186131537155347f46f7da5eb0d51b27707e71da...", created_at: "2011-03-14 14:26:48", updated_at: "2011-03-15 01:54:33", email: "[email protected]", crypted_password: "0d6489b1447d278bc4f7c86bab13787f226a10a302b43ec02ff...", password_salt: "Lq2G80iSVeaitB5PDwf", perishable_token: "Tm7Jzyq8QutfaxL3JLZ8", active: true>}