2012-04-09 20 views
6

¿Cómo puedo pasar una variable (id) del oyente JavaScript:Pasando variable de JavaScript a Ruby-on-carriles controlador

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

Para la variable de instancia (@foo) en el controlador ruby-on-rails

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

para crear correctamente una relación en la vista (forma):

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

Gracias!

+2

simplemente debe hacer una llamada ajax GET o POST en lugar de la 'alerta' – apneadiving

+0

gracias, parece que resolver mi problema! –

Respuesta

4

Si lo entiendo correctamente, una buena manera de hacerlo es usar AJAX para enviar el id a su acción y usar la acción para procesar su formulario.

Eso sería algo como esto en su javascript:

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

Tendrá una ruta:

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

Luego, en su acción se puede agarrar ese id y hacer que su forma algo así como esto:

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

Luego puedes crear un formulario para @user en un parcial o lo que sea

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

Tendrá que completar todos los detalles, pero eso los acercará bastante.

Cuestiones relacionadas