Я пытаюсь обновить атрибут вложенного ресурса с помощью кнопки, но не могу заставить его работать. Запросы - это вложенный ресурс Gigs. Пользователь может видеть список всех запросов для своего конкретного концерта, с кнопкой после каждого для «найма» и «отклонения».Кнопка для обновления атрибута вложенного ресурса
Ближайший я пришел с;
<%= form_for ([@gig, @gig.requests.build]) do |h| %>
<%= h.hidden_field :status, value: "hired" %>
<%= h.submit "Hire", class: "btn" %>
<% end %>
Поскольку у меня есть .build
дублируется «запрос» с правильным статусом, но оригинал остается нетронутым. Я пробовал использовать .update
и .patch
, но они не работают, и поскольку я не могу найти список переменных, любые дальнейшие попытки были бы бесполезны.
Я также пробовал метод link_to
, например.
link_to("Hire", gig_requests_path(@request, :status => "hired"), :method => :put, :confirm => "Are you sure?")
, который дает ошибку маршрута.
У меня, похоже, самый близкий метод формы, хотя я предполагаю, что метод ссылки не работает, поскольку я, вероятно, запутался из-за того, что ресурс вложен. Любые разъяснения будут очень признательны!
Только в случае, если:
def update
@request = Request.find(params[:id])
if @request.update(request_params)
redirect_to gig_path(@gig)
else
render 'edit'
end
end
private
def request_params
params.require(:request).permit(:message, :gig_id, :status)
end
Маршруты:
resources :gigs do
resources :requests
end
Вы можете столкнуться с проблемами при помощи 'request' в качестве модели или переменной. Для моделирования веб-запросов используется объект запроса: http://api.rubyonrails.org/classes/ActionDispatch/Request.html –