2011-07-31 2 views
0

geolocation을 사용하여 나의 장치 등록 양식에 도시 필드를 자동으로 채우려고합니다.geolocation을 사용하여 장치 등록 양식의 위치를 ​​자동 채우는 방법은 무엇입니까? (또는 이와 동등한 솔루션)

다음
def new 
resource = build_resource({}) 
respond_with_navigational(resource){ render_with_scope :new } 
@geo = GeoLocation.find(request.remote_ip) 
resource[:city] = @geo[:city] 
end 

내가 형태가 무엇 :

<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %> 
<%= devise_error_messages! %> 
<p><%= f.label :city, 'City' %><br /> 
<%= f.text_field :city %></p> 

는 솔직히, 내가 가르치는 한 다음 나는 내 자신의 컨트롤러 폴더에 유증의 registrations_controller를 복사 작업 새로운 편집 한 나 자신 만의 레일/루비와 꽤 쉬운 실수를하고 있음을 확신하지만 devise를 사용하면 그것을 사용자 정의하려고 할 때 매우 혼란 스럽다는 것을 알았습니다. 이것을 달성하기위한 가장 좋은 방법은 무엇입니까? 등록 컨트롤러를 편집해야합니까? 어떤 도움을 주셔서 감사합니다.

수정 답변 해 주셔서 감사합니다. 그것은 의미가 있으며, 나는 생각해야합니다. 어쨌든, 그것은 나를 더 깊게 파고 들게했다. 이제는 IP가 나오는 도시로 자동으로 채워지는 컬렉션 선택기가있는 양식이 있습니다. 여기에 나를 위해 일한 코드는 다음과 같습니다

컨트롤러 :

def new 
    @geo = GeoLocation.find(request.remote_ip) 
    @city = City.find_by_name(@geo[:city]) 
    resource = build_resource(:city_id => @city[:id]) 
    respond_with_navigational(resource){ render_with_scope :new } 
    end 

형태 :

<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %> 
    <%= devise_error_messages! %> 

    <p><%= f.label :city_id, 'City' %><br /> 
    <%= f.collection_select(:city_id, City.all, :id, :name, :prompt => true) %> 

이제 나의 다음 단계는 사용자가 없습니다 데이터베이스 및 방법에 도시를 추가 할 수 있도록하는 방법을 알아낼 것입니다 이 모든 것을 시험해보기. 다시 한번 감사드립니다. 그 후 리소스에 만든

respond_with_navigational(resource){ render_with_scope :new } 

변경이 렌더링 된 뷰에 반영되지 않습니다 :

답변

1

이 명령은 컨트롤러 액션의 마지막이 될 필요가있다.

+0

의미가 있습니다. 내 부분에 대한 기본적인 실수. 감사! –

+0

기꺼이 도와 드리겠습니다! 그것이 효과가 있다면 답을 받아 들여주세요. –

관련 문제