最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Passing JavaScript variable to ruby-on-rails controller - Stack Overflow

programmeradmin2浏览0评论

How can I pass a variable (id) from the JavaScript listener:

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

To the instance variable (@foo) in ruby-on-rails controller

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

to correctly create a relationship in the view (form):

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

Thanks!

How can I pass a variable (id) from the JavaScript listener:

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

To the instance variable (@foo) in ruby-on-rails controller

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

to correctly create a relationship in the view (form):

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

Thanks!

Share asked Apr 9, 2012 at 22:00 Ilya CherevkovIlya Cherevkov 1,8032 gold badges18 silver badges51 bronze badges 2
  • 2 you should simply do an ajax call GET or POST instead of the alert – apneadiving Commented Apr 9, 2012 at 22:12
  • thanks, it seems to resolve my problem! – Ilya Cherevkov Commented Apr 11, 2012 at 5:08
Add a ment  | 

1 Answer 1

Reset to default 6

If I am understanding correctly, a good way to do this is to use AJAX to submit the id to your action and use the action to render your form.

That would look something like this in your javascript:

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

You'll need a route:

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

Then in your action you can grab that id and render your form something like this:

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

Then you can just build a form for @user in a partial or whatever

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

You'll have to fill in the details there, but that should get you pretty close.

发布评论

评论列表(0)

  1. 暂无评论