Я работаю над приложением rails, где пользователь может отправить имя друга и адрес в форме:
<%= form_tag "/meetings/#{@meeting.id}/friends/", method: 'post' do %>
<p>
Add a friend
<input type="text" name="name" placeholder="Name of your friend"/>
<input type="text" id="address-input" name="address" placeholder="Their location"/>
<input type="hidden" name="meeting" value= <%= @meeting.id %> />
<input type="submit" value="Add this friend" />
</p>
<% end %>
В моем приложении есть три объекта: Местоположение, Друг и Встреча.Место принадлежит другу и встрече;Друг принадлежит к Meeting.
Я перенаправляю запрос POST формы на действие create моего контроллера, где я создаю экземпляры объекта Friend и Location, где я храню данные, полученные из GMaps.Запрос API:
def create
# Check that the fields aren't empty
if params[:name].length != 0 && params[:address].length != 0
# Make the address compatible for GMaps API request
@address_ascii = I18n.transliterate(params[:address])
# Geocode the address through GMaps API request
response = RestClient::Request.execute(
method: :get,
url: "https://maps.googleapis.com/maps/api/geocode/json?address=#{@address_ascii}&key=AIzaSyDzPiNW9oiPpmL-o1RCVQUVYoT_zk3D3dU"
)
# Get status of the GMaps API request
@status = JSON.parse(response)['status']
# Check status of the GMaps API request
if @status == "OK"
# Get latitude, longitude and formatted address of this friend we've just created
@lat = @@gmaps_geocoding.geocode(@address_ascii).first[:geometry][:location][:lat]
@lng = @@gmaps_geocoding.geocode(@address_ascii).first[:geometry][:location][:lng]
@formatted_address = @@gmaps_geocoding.geocode(@address_ascii).first[:formatted_address]
# Create instances of Friend and Location, store name of friend and location data into the instances
f = Friend.create name: params[:name], meeting_id: params[:meeting]
Location.create latitude: @lat, longtitude: @lng, address: @formatted_address, friend_id: f.id, meeting_id: f.meeting_id
Пока здесь все работает.Экземпляры создаются и хранятся в БД.Но тут все становится сложнее.В моем контроллере я пытаюсь обновить некоторые переменные, включая значения экземпляра Meeting:
def create
# Code previously shown
.
.
.
.
f = Friend.create name: params[:name], meeting_id: params[:meeting]
Location.create latitude: @lat, longtitude: @lng, address: @formatted_address, friend_id: f.id, meeting_id: f.meeting_id
# New code
@meeting = f.meeting
@meeting.latitude = 49.3
@meeting.longtitude = 2.3
Но затем, когда я пытаюсь показать значения latitude
, longtitude
в моем представлении, ничего не отображается вбраузер ...
Я попытался отладить с помощью консоли браузера rails, но все значения nil
.
Возможно ли, что я не использую запрос POST, как должен?Есть ли проблема в моем контроллере?