簡體   English   中英

在Rails應用程序中使用AJAX無需使用表單即可更新模型字段

[英]Using AJAX in a rails app to update a model field without using a form

我有一個看起來像這樣的表:

在此處輸入圖片說明

每行都來自此部分:

<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>

如何使“批准”按鈕轉到chords_controllerapprove動作,該操作將更新和弦的state字段,然后在approve.js.coffee運行JS / approve.js.coffee

我(理想情況下)想在“批准”鏈接中使用remote: true ,但是我不確定如何確保控制器知道哪個Chord被批准。

現在,#approve操作如下所示:

def approve
  chord.approve
  # this method is on the Chord model and is working
  respond_to do |format|
    format.js
  end
end

我想以正確的“軌道”方式進行操作,因此,任何指導/建議將不勝感激! 謝謝!

添加會員路線以供批准:

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]進入params,因此您可以在控制器中執行此操作:

@chord = Chord.find(params[:id])
@chord.approve

您的respond_to塊看起來不錯,您的JavaScript將運行。

視圖:

<%= 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必須位於正確的位置(我猜是views/chords文件夾)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM