我有一个看起来像这样的表:
每一行都来自这个部分:
<div class="row chord-table-row" id= <%= "chord-#{chord.id}" %>>
<div class="small-1 columns"><%= chord.id %></div>
<div class="small-2 columns"><%= chord.name %></div>
<div class="small-3 columns"><%= chord.description %></div>
<div class="small-3 columns"><%= chord.user.username %></div>
<div class="small-3 columns"><%= link_to 'Approve', approve_path, class: 'chord-approval-button' %></div>
</div>
如何让“批准”按钮转到approve
中的chords_controller
操作,该操作将更新和弦的state
字段,然后运行JS / Coffeescript在approve.js.coffee
?
我(理想情况下)喜欢在“批准”链接中使用remote: true
,但我不确定如何确保控制器知道哪个和弦被批准。
现在#approve动作如下所示:
def approve
chord.approve
# this method is on the Chord model and is working
respond_to do |format|
format.js
end
end
我想以正确的“轨道”方式做到这一点,所以任何指导/建议都将非常感谢!谢谢!
答案 0 :(得分:8)
添加会员路线以供审批:
resources :chords do
member do
post 'approve'
end
end
然后url助手将接受和弦/和弦id。您可以像以下一样使用remote: true
:
<%= link_to 'Approve', approve_chord_path(chord), remote: true, method: :post %>
和弦ID将以params[:id]
的形式到达参数,因此您可以在控制器中执行此操作:
@chord = Chord.find(params[:id])
@chord.approve
您的respond_to
块看起来不错,您的JavaScript也会运行。
答案 1 :(得分:0)
视图:
<%= link_to_function 'Approve', "$.get('#{approve_path}', {chord_id: #{chord.id}})", class: 'chord-approval-button' %>
approve.js:
$('dom#u_need_to_change').html('<%= j render partial: 'partial_you_need_to_render' %>')
全部是
当然,您需要正确的路线(get
,或者您可以更好地将其更改为post
,而不是真正重要)并且approve.js
必须在正确的位置({{1文件夹,我猜)