2012-04-09 7 views
6

にJavaScript変数を渡す:ルビーオンレールコントローラ私はJavaScriptのリスナーからの変数(ID)を渡すことができますどのようにルビーオンレールコントローラ

にインスタンス変数(@foo)に

Gmaps.map.callback = function() { 
    ... 
    ... 
    google.maps.event.addListener(marker, 'click', function() { 
     var id = this.currentMarker; 
     alert(id); 
    }); 
    } 
    } 

def create 
    @foo = ??? 
    ... 
end 

正しくビュー(フォーム)で関係を作成するには:

<%= form_for user.relationships.build(:followed_id => @foo.id) do |f| %> 
<div><%= f.hidden_field :followed_id %></div> 
<div class="actions"><%= f.submit "Follow" %></div> 
<% end %> 

感謝を!

+2

「警告」の代わりにGETまたはPOSTを使ってください。 – apneadiving

+0

ありがとう、それは私の問題を解決するようです! –

答えて

4

正しく理解していれば、これを行う良い方法は、AJAXを使用してIDをアクションに送信し、アクションを使用してフォームをレンダリングすることです。 JavaScriptの中で次のようになります

jQuery.ajax({ 
    data: 'id=' + id, 
    dataType: 'script', 
    type: 'post', 
    url: "/controller/action" 
}); 

あなたはルートが必要になります:

post 'controller/action/:id' => 'controller#action' 

は、その後、あなたのアクションで、あなたは次のようにそのIDを取得し、フォームをレンダリングすることができますこれは

def action 
    @user = User.relationships.build(:followed_id => params[:id]) 
    render :viewname, :layout => false 
end 

です。次に、@userのフォームを部分的に作成することもできます。

<%= form_for @user do |f| %> 

あなたはそこに詳細を記入する必要がありますが、それはかなり近づくはずです。

関連する問題