将 JavaScript 变量传递给 ruby-on-rails 控制器

Passing JavaScript variable to ruby-on-rails controller

本文关键字:ruby-on-rails 控制器 JavaScript 变量      更新时间:2023-09-26

如何从JavaScript侦听器传递变量(id):

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

到轨道上的红宝石控制器中的实例变量 (@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| %>

你必须在那里填写细节,但这应该让你非常接近。