2017-05-31 8 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パスを取ります。 IDを:私はそれを試してみました、私が行方不明、一致するルートのエラーを取得する - collection pathがdoesnot必要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

形成おかげだろう。私はそのルートで質問を更新します。 – RADan

+0

do_thing_object_path(id:object.id) – umair

+0

私の問題は、私がまだIDを持っているオブジェクトを持っていないということです。インスタンス化されたオブジェクト(つまりIDを持つオブジェクト)を使用してメソッドを呼び出すことはできません。確信はないけど。) – RADan

関連する問題