2017-05-31 51 views
0

我有一個新對象的窗體,我想包含一個按鈕,它將在保存對象之前調用新對象的控制器中的方法。當一個對象沒有被實例化時使用控制器方法

<%= button_to 'do thing', do_thing_object_path(), remote:true %> 

...需要一個帶括號內id的對象。如何在不實例化對象的情況下調用方法?

目標是一種'新'形式,只有在用戶選擇時纔會創建嵌套對象 - 用戶點擊按鈕,調用父對象控制器中的方法,該方法實例化嵌套對象並觸發一點的JavaScript來顯示嵌套表單的部分。在任何對象之前的所有這些都是實際創建的

我的路線包括:

resources :objects do 
    member do 
     get 'show_thing' 
    end 
    end 

回答

1

既然你已經採取了,

member do 
     get 'show_thing' 
    end 

這是一個member路徑。​​3210需要id

Here is the reference of it

而是採取collection路徑。該collection path不列入需要id

resources :objects do 
    collection do 
    get 'do_thing' 
    end 
end 

do_thing_objects_url將是url形成

<%= button_to 'do thing', do_thing_objects_path(), remote:true %>

0

鏈接將是這樣的:

<%= link_to 'do thing', do_thing_object_path(id: object.id), remote: true %> 

控制器動作將

def some_action 
    @object = SomeClass.new 
end 

創建一個文件some_action.js.erb

$('#partial_container_id').removeClass('hidden'); 
+0

感謝響應 - 我沒有嘗試,我得到一個不匹配的路由錯誤,遺漏:ID。我會用路線更新問題。 – RADan

+0

do_thing_object_path(id:object.id) – umair

+0

我的問題是我還沒有一個帶有id的對象 - 它可能是不可能用一個實例化對象調用一個方法(即一個帶有id的對象,但我不確定。) – RADan

相關問題