Как сохранить выбранную кнопку в параметрах?

Я новичок в программировании, пишу простую игру «Камень, ножницы, бумага». есть 3 кнопки с картинками, в зависимости от того, какую из них нажмет игрок, на следующей странице должна появиться эта картинка. Другими словами, если игрок нажимает кнопку «рок», то это должно отображаться на следующей странице. Проблема в том, что я не могу понять, как сохранить выбранную кнопку, чтобы она отображалась в маршруте «/results».


(play.erb)

        <div class = "pbox-1">
        <form action=/choice method = "post">
          <input type = "image" src = "images/rock.jpg"  name = "rock" />
        </form>
        </div>
        <div class = "pbox-2">
        <form action=/choice method = "post">
          <input type = "image" src = "images/paper.jpg"  name = "paper" />
        </form>
        </div>
        <div class = "pbox-3">
        <form action=/choice method = "post">
          <input type = "image" src = "images/scissors.jpg"  name = "scissors" />
        </form>
        </div>
(controller)

require 'sinatra/base'
require './lib/game'
require './lib/player'

class Rps < Sinatra::Base
    enable :sessions

    get '/play' do
        erb :play
    end

    post '/choice' do
        redirect '/results'
    end

    get '/results' do
        erb :results
    end

    run! if app_file == $0
end
(Player class)

require_relative 'game'

class Player
    attr_reader :name, :choice
    def initialize(name)
        @name = name
        @choice = nil
    end
    def make_choice(player_choice)
        @choice = player_choice
    end
end
(Game class)

require_relative 'player'

class Game
    attr_reader :players 
    def initialize(player_1)
        @players = player_1
    end
    def player_1
        @players
    end
    def player_1_choice
        player_1.choice
    end
end

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
0
47
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете поместить скрытое поле в каждую из форм, например:

<input type = "hidden" name = "choice" value = "rock" />

Затем в вашей функции post '/choice' вы можете получить к ней доступ с помощью params[:choice].

Другие вопросы по теме