对DB的部分查询返回完整列,需要逐行数据

时间:2011-12-30 13:34:47

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1

查看

<%= link_to "Link", {:action => "AjaxView",:col => "colname"}, :update => "Ajaxcall", :remote => true %>

控制器

def AjaxView
  @vars= Var.find(:all,:conditions => { :varName=> "one" },:select=>(params[:col]))
 respond_to do |format|
   format.js { render :layout=>false }
end
end

AjaxView.js.erb

$("#3").text("<%= escape_javascript(render(:partial => "var", 
                                           :collection => @vars)) %>");

_var.html.erb

<%= var.col1 %>

现在它从Column返回所有值,需要它们一个接一个吗?

当前输出为:“amit1 amit2 amit3 amit4”为单字符串 我希望逐个获取这些值,以便我可以使用Div id映射它并在Grid

中发布它们

所需输出为:“amit1”

2 个答案:

答案 0 :(得分:2)

以这种方式调用render(:partial => "var", :collection => @vars)时,实际上是逐个为每个变量渲染部分。因此,要逐个使用这些数据,我认为您需要其中一种:

1)使用你要在partial中添加的所有html部分: _var.html.erb

<td id='<%= var.col1 %>'>    # or whatever attributes you want
   ..
</td>

2)直接在partial中迭代变量: AjaxView.js.erb

$("#3").text("<%= escape_javascript(render(:partial => "var")) %>");

_var.html.erb

<% @vars.each do |var| %>
  # do whatever you want
<% end %>

答案 1 :(得分:0)

非常感谢alony

她提供的正确答案是

  <% @vars[2].col1 %>

也在AjaxView.js.erb中写,

  $("#3").text("<%= escape_javascript(render(:partial => "var")) %>");
相关问题