Rails - Не удается обновить переменные БД через мой контроллер через запрос POST - PullRequest
0 голосов
/ 08 июня 2018

Я работаю над приложением 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, как должен?Есть ли проблема в моем контроллере?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...