Редактировать: я закончил переименовывать все запросы на назначения в проекте, и в результате возникли некоторые проблемы.Я вернусь сюда с обновлением позже, после того, как разберусь с этими проблемами, сейчас просто нужно сделать перерыв.Спасибо за помощь.
Простой вопрос, я довольно новичок в Rails на Ruby и с трудом понимаю, как работает маршрутизация.Версия 5.1.1.2.
Я хочу, чтобы кнопка создала новый объект Active Record, когда пользователь нажимает кнопку, чтобы подтвердить, что он / она принял запрос.Я пытаюсь сделать так, чтобы кнопка посмотрела текущий запрос по его идентификатору, а затем создала новую запись контракта, используя этот идентификатор в качестве внешнего ключа.Я продолжаю получать сообщение об ошибке ActiveRecord NotFound и подозреваю, что код в router.rb и кнопка неправильные.Я протестировал сами модели, и они работают в консоли rails, запустив user.accept (запрос) и user.decline (запрос), который находится в user.rb.Проблема пытается заставить кнопку выполнить то же действие.
частичное для _accept button
<%= form_with model: current_user.active_contracts.build, local: true do |f| %>
<div><%= hidden_field :request_id, @request %></div>
<%= f.submit "Accept", class: "btn btn-primary" %>
<% end %>
rout.rb
Rails.application.routes.draw do
root 'pages#home'
devise_for :users,
path: '',
path_names: {sign_in: 'login', sign_out: 'logout', edit: 'profile', sign_up: 'registration'},
controllers: {omniauth_callbacks: 'omniauth_callbacks', registrations: 'registrations'}
resources :users
resources :contracts, only: [:create, :destroy]
resources :requests, except: [:edit] do
member do
get 'title'
get 'dateandtime'
get 'description'
get 'location'
end
end
end
contract_controller.rb
def create
@request = Request.find(params[:id])
current_user.accept(request)
redirect_to request
end
def destroy
@request = Request.find(params[:id]).accepted
current_user.decline(request)
redirect_to request
end