【发布时间】:2016-02-17 17:25:50
【问题描述】:
我需要同时更改两个不同模型的属性。我有一个gig 模型。演出has_manyrequests
我有一个表格可以将gig 的状态更改为filled,同时我想将演出请求的状态更改为“拒绝”。 (那些还没有“雇用”状态的人)
请求有status: string
Gig 有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>
任何关于如何实现这一点的建议将不胜感激,谢谢。
【问题讨论】:
标签: ruby-on-rails controller hidden-field update-attributes