AJAX请求中的参数

时间:2011-04-10 09:37:50

标签: ruby-on-rails

我有一个包含多个链接的视图:

<% a.each do |q| %> 
   <%= link_to "stock it", 
        { :action => "stock", 
          :qid => q.question_id, 
          :qur => q.question_answers_url, 
          :qti => q.title } , 
        :remote => true %> 

   <div id="<%= "stock" + q.question_id.to_s %>"></div>
<% end %>

每个链接都会生成AJAX请求。这是一个控制器:

def stock
  if(!Later.where(:question_id => params[:qid]).exists?)
    later = Later.new(:question_id => params[:qid], :name => params[:qti], :url => params[:qur])
    later.save
  end 

  respond_to do |format|
    format.js { render :layout=>false }
  end
end  

现在返回视图。每个链接都有一个'div',其唯一的id ='stock'。当用户按下链接时,我需要将文本添加到具有相应ID的特定div。

我有一个stock.js.erb文件:

$("#stock<number>").html("some text");

如何将div-id传递给stock.js.erb以及如何使用它?

1 个答案:

答案 0 :(得分:1)

常用的是将object.id添加到您的DOM ID中。你刚才所做的那样:

<div id="<%= "stock_#{q.question_id}" %>"></div>

然后在您的控制器中,您应该定义question_id或您的确切question

def stock
  if(!Later.where(:question_id => params[:qid]).exists?)
    later = Later.new(:question_id => params[:qid], :name => params[:qti], :url => params[:qur])
    later.save
  end
  @question_id = params[:qid]
end

现在它将与您的stock.js.erb文件共享:

$("#stock_<%= @question_id %>").html("some text");