如何从JavaScript侦听器传递变量(id):
Gmaps.map.callback = function() { ... ... google.maps.event.addListener(marker, 'click', function() { var id = this.currentMarker; alert(id); }); } }
到ruby-on-rails控制器中的实例变量(@foo)
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 %>
谢谢!
如果我正确理解,执行此操作的一个好方法是使用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| %>
您必须在此处填写详细信息,但这应该可以使您更加接近。