Javascript 通过ajax渲染元素

Javascript 通过ajax渲染元素,javascript,jquery,ruby-on-rails,ajax,Javascript,Jquery,Ruby On Rails,Ajax,我有一个页面,当单击按钮时,我希望在rails端运行一个方法,并相应地更新页面: 控制器方法: def disallow_part_for_augment disallowed_part = AvailableAugmentsPart.create(part_id: params[:part_id], available_augment_id: params[:id], disallow: true) disallowed_part.save() respond_to do

我有一个页面,当单击按钮时,我希望在rails端运行一个方法,并相应地更新页面:

控制器方法:

def disallow_part_for_augment
   disallowed_part = AvailableAugmentsPart.create(part_id: params[:part_id], available_augment_id: params[:id], disallow: true)
   disallowed_part.save()

   respond_to do |format|
     format.html { redirect_to v2_parts_url }
     format.js
   end
end
Ajax方法:

$ ->
  $('#disallow-part').click (e) ->
    console.log $(this).attr("href")
    e.preventDefault()
    $.ajax
      url: $(this).attr("href")
      type: 'PUT'
      //data: 
    return
调用helper方法的部分就是我想要更新的部分

            <td><%= au.augment.code %></td>
            <%= show_part_group_for_allowed_parts(part_group.name, @part.id, au.id) %>
            <td><%= part_group.part_category.name %></td>

辅助方法

def show_part_group_for_allowed_parts(part_group_name, part_id, available_augment_id)
    html = ""

    if AvailableAugmentsPart.is_part_disallowed(part_id, available_augment_id).exists?
      html << "<td class='status color-red'>Disallowed</td>"
    else
      html << "<td>#{part_group_name}</td>"
    end
    return raw(html)
  end
def显示允许的零件的零件组(零件组名称、零件id、可用的扩充id)
html=“”
如果AvailableArgmentSpart.is\u part\u不允许(part\u id,available\u augment\u id)。是否存在?

html在您的控制器中调用
format.js
将查找\u augment.js.erb
的模板
disallow\u part\u,并将其发送到浏览器中执行。因此,在这里,您可以执行更新页面所需的操作

要轻松找到要更新的零件,您需要向其添加类或ID(例如,在您的助手中):

<%= link_to('DISALLOW', "disallow_part_for_augment/#{au.id}", id: 'disallow-part', class: 'btn btn-mini btn-primary', title: 'Disallow', remote: true) %>
html << "<td id='part-#{part_id}' class='status color-red'>Disallowed</td>"
$("#part-<%= @disallowed_part.part_id %>")
  .replaceWith(
    "<%= escape_javascript(show_part_group_for_allowed_parts(...)) %>");