Кнопка Rails, которая может увеличивать данные в БД - PullRequest
0 голосов
/ 15 сентября 2018

Я пытаюсь создать кнопку, которая при нажатии добавит значение в базу данных и может увеличиваться.

Я бы предпочел использовать радиокнопки, в настоящее время они установлены, и когда радиокнопка выбрана, и кнопка отправки нажата, она устанавливает значение в дБ.ЭТО не увеличивает.

Пример кода ниже находится на странице запроса # show.Цель состоит в том, чтобы пользователь мог просмотреть запрос, и, если они могут помочь, он выберет переключатель и нажмет кнопку «Отправить», и данные будут увеличены и сохранены в БД.

Пример:

<%= simple_form_for @request do |f| %>

<%= f.radio_button :done, 1 %>I am helping<br/><br/>
<%= f.radio_button :done, 0 %>Maybe next time<br/><br/>

<%= f.button :submit %>

Ниже приведена моя попытка увеличения с помощью контроллера, но я не уверен, как его вызвать при нажатии кнопки submit:

  def incr_done
    @request = Request.find(params[:id])

    if @request.done == "yes" 
        then @request.done += 1
    else @request.done == "no"
         @request.done -= 1
    end
end

def done_params
    params.require(:request).permit(:done)
end

Routes:

Rails.application.routes.draw do

devise_for :users
get 'static_pages/home'

root 'static_pages#home'

resources :requests 
end

Столбец в базе данных в этом примере "выполнено" и задано как целое число.

Я могу предоставить больше моего кода, но я стараюсь, чтобы вопрос и пример были простыми и понятными.

1 Ответ

0 голосов
/ 15 сентября 2018

Маршруты:

resources :requests do
  member { patch 'incr_done' }
end

Просмотр

<%= simple_form_for @request, url: incr_done_request_path do |f| %>

  <%= f.radio_button :done, 1 %>I am helping<br/><br/>
  <%= f.radio_button :done, -1 %>Maybe next time<br/><br/>

  <%= f.button :submit %>
<%end%>

Контроллер

def incr_done
  @request = Request.find(params[:id])
  count = params[:request] && params[:request][:done].to_i

  if count.in? [-1,1]
    @request.update_attributes(done: @request.done + count)
  end

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