簡體   English   中英

Ruby on Rails:需要幫助來更新嵌套路由中的db屬性

[英]Ruby on Rails: Need help updating db attribute in a nested route

首先,我要說的是,我是Rails和編程的新手。

我正在嘗試建立一些鏈接來打開和關閉布爾屬性。 通過執行以下操作,我基本上在非嵌套資源上成功完成了此操作:

路線:

resources :my_resource do
 get 'toggle_attribute', :on => :member
end

控制器:

def toggle_attribute
  @resource = Resource.find(params[:id])
  @resource.toggle!(:attribute)
end

查看: <%= link_to "Toggle Resource", toggle_attribute_resource_path(@resource), :remote => true %>

首先,就像我在上面說過的那樣,這適用於我的非嵌套路由,但是無論我嘗試將哪種解決方案添加到控制器,我都無法獲得鏈接來閃爍消息或單擊時重定向至任何內容,請單擊該按鈕並沒有任何反應,您必須手動刷新才能看到更改。

其次,我不知道如何在嵌套這樣的路由上使用相同的方法:

路線:

resources :resource_1 do
resources :resource_2
end

誰能給我一些提示?

在此先感謝一噸。 這些東西一直在推動我前進。

通過使用remote => true ,您可以告訴它進行ajax調用。 這意味着您還需要在views文件夾中添加一個toggle_attribute.js.erb文件,並在該文件中使用javascript用所需的內容替換link元素或文本。

還請確保通過在控制器頂部設置respond_to :html, :js來響應js。

repond_to :html, :js
def toggle_attribute
  @resource = Resource.find(params[:id])
  @resource.toggle!(:attribute)
end

toggle_attribute.js.erb:

$('#toggler').html("my new html here");

鑒於:

<%= link_to "Toggle Resource", toggle_attribute_resource_path(@resource), :remote => true, :id => "toggler"%>

更新:

對於您的嵌套路線,請嘗試以下操作:

resources :resource_1 do
  resources :resource_2 do
    member do
      get :toggle_attribute
    end
  end
end

您的路徑將類似於:

toggle_attribute_resource_1_resource_2_path(@resource, @resource2)

暫無
暫無

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

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