Мне нужно изменить атрибуты двух разных моделей одновременно. У меня модель gig
. gig has_many
requests
У меня есть форма для изменения статуса gig
на filled
, и в то же время я хочу изменить статус запросов этих гигов на «отклонить». (Те, у кого еще нет статуса "нанят")
Запрос имеет status: string
У концерта filled: boolean
Модель запроса:
scope :nothired, -> { where.not(status: 'hired') }
Контроллер запроса:
def reject
@request = Request.find(params[:id])
@request.update(status: "reject")
@request.save
UserMailer.reject_notification(@request).deliver
redirect_to gig_requests_path
flash[:notice] = "MARKED AS REJECTED"
end
Посмотреть:
<%= simple_form_for @gig, :method => "put" do |t| %>
<% @gig.requests.nothired.each do |request| %>
<%= t.hidden_field :filled, :value => true %>
<%= t.submit t('dash.filltitle'), data: { confirm: "Are you sure?" }, class: "fill-gig-btn" %>
<% end %>
<% end %>
Теперь я не уверен, как отформатировать это, чтобы включить действие контроллера requests
.
Я попытался передать действие requests reject
через скрытое поле (действие отклонения находится в контроллере и работает) с помощью:
<%= t.hidden_field { controller: "requests", action: "reject", id: request.id }, method: :post %>
Но это дает:
undefined method `{:url=>{:action=>"reject", :controller=>"requests", :id=>53}, :method=>:post}' for #<Gig:0x0055ef27d98cc8>
Любые советы о том, как достичь этого, будут очень признательны, спасибо.