2012-04-09 90 views
6

我如何傳遞一個變量(ID):傳遞JavaScript變量的Ruby-on-Rails通過JavaScript的監聽控制器

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

要的Ruby-on-軌控制器

實例變量(@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 %> 

謝謝!

+2

你應該簡單地做一個ajax調用GET或POST而不是'alert' – apneadiving 2012-04-09 22:12:17

+0

謝謝,它似乎解決了我的問題! – 2012-04-11 05:08:36

回答

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

你必須在那裏填寫細節,但這應該讓你非常接近。