Как передать параметры в ax ios url? - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь использовать Топор ios в моем Ruby Проекте Синатра. В моем файле ruby определен URL.

post '/follow/:id' do
# do something
end

В моем файле erb я пытаюсь передать эту переменную в мой встроенный скрипт.

<body>
    <div id="follow_element">
        <button v-on:click="followUser">Follow</button>
    </div>

    <script>
        window.addEventListener('load', function(){
            const app = new Vue({
                el: "#follow_element",
                methods:{
                    followUser(){
                        axios.post("/follow", {
                            params: {
                                id: <%= @user.id %>
                            }
                        })
                    }
                }
            })
        })
    </script>
</body>

Что Я хочу, чтобы, если пользователь нажал кнопку, приложение щелкнуло бы по ссылке / follow /: id, чтобы обновить результат. Однако я столкнулся с двумя проблемами. Во-первых, <% = @ user.id%> не работает (@user - переменная, доступная в этом эрбе). Во-вторых, приложение достигает конечной точки «/ follow» вместо конечной точки «/ follow /: id».

Не могли бы вы дать мне несколько советов? Большое спасибо.

1 Ответ

0 голосов
/ 31 марта 2020

Обратите внимание, что, как вы написали это:

post '/follow/:id' do
# do something
end

Теперь вы будете принимать POST-запросы, такие как: /follow/oneRandomId, follow/124184965 и так далее ...

Прямо здесь, Вы делаете запрос к /follow, передавая параметры POST, которые не указаны в URL. Это не будет работать:

axios.post("/follow", {
  params: {
    id: <%= @user.id %>
  }
})

Чтобы исправить это, вы можете сгенерировать URL с доступным @user.id и сделать запрос POST, например:

axios.post("/follow/<%= @user.id %>")

Или Если вы хотите передать некоторые данные пользователю (данные POST, а не параметры URL), вы можете сделать это:

axios.post("/follow/<%= @user.id %>", {
  name: 'A beautiful name to insert to an user with that ID'
})

Если вы все еще застряли, вы также можете использовать axios(config), что я думаю немного яснее о том, что он делает, с ax ios README page :

axios({
  method: 'post',
  url: "/follow/<%= @user.id %>",
  data: {
    firstName: 'Fred',
    lastName: 'Flintstone'
  }
});
...