2012-04-09 12 views
6

Come posso passare una variabile (id) dall'ascoltatore JavaScript:Passando variabile JavaScript per Ruby-on-rails regolatore

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

Per la variabile di istanza (@pippo) regolatore

ruby-on-rails
def create 
    @foo = ??? 
    ... 
end 

per creare correttamente un rapporto nella visualizzazione (modulo):

<%= 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 %> 

Grazie!

+2

si dovrebbe semplicemente effettuare una chiamata ajax GET o POST invece di 'alert' – apneadiving

+0

grazie, sembra risolvere il mio problema! –

risposta

4

Se sto capendo correttamente, un buon modo per farlo è usare AJAX per inviare l'id alla tua azione e usare l'azione per rendere il tuo modulo.

Che sarebbe simile a questo nel tuo javascript:

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

Avrete bisogno di un percorso:

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

Poi nella vostra azione si può afferrare che id e rendere la vostra forma qualcosa di simile this:

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

Quindi puoi semplicemente creare un modulo per @user in modo parziale o simile

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

Dovrai inserire i dettagli lì, ma questo dovrebbe portarti vicino.

Problemi correlati