繁体   English   中英

Rails-将参数哈希传递到js.erb文件

[英]Rails - passing params hash to js.erb file

我有一个Rails 4应用程序,正在尝试将从表单捕获的params [:search]传递给控制器​​,最终传递给js.erb文件,但是哈希值没有通过。

sessions_controller.rb:

def home
  @persons = People.select("persons.name").where("persons.name LIKE ?", params[:search])

  respond_to do |format|
    format.html
    format.js { render :template => 'sessions/home.js.erb' }
  end
end

home.html.erb:

<%= @persons.to_sql %>

<%= form_tag home_path, :method => 'get' do %>
  <%= text_field_tag :search, params[:search] %>
  <%= submit_tag "Search", :name => nil %>
<% end %>

<div id="persons">

</div>

_person_list.html.erb:

<%= person.name %><br>

home.js.erb文件:

$('#persons').html("<%= escape_javascript(render partial: 'person_list', collection: @persons, as: 'person') %>");
console.log("<%= @persons.to_sql %>");

home.html.erb产生以下SQL代码段(这是预期的):

WHERE (persons.name LIKE 'john')

但是,根据js.erb文件中的代码,开发人员控制台会产生以下内容:

WHERE (persons.name LIKE NULL)

如果我将控制器中的params [:search]替换为'john'或将params [:search] ='john'设置,则视图文件和js.erb文件将产生相同的SQL代码段。 另外,如果我在控制器中省略了.where statemnt,那么代码也可以正常工作,并且我相信问题与使用params [:search]有关。 使用上面的代码,我可以确认该URL包含:

www.website.com/home?search=john

并且调试容器显示:

--- !ruby/hash:ActionController::Parameters
utf8: ✓
search: john
controller: sessions
action: home

我已经尝试过params [:search] .to_s,但这似乎也不起作用。

有人可以告诉我如何将params [:search]的值传递给js.erb文件吗? 谢谢!

使用浏览器开发人员工具中的“网络”面板检查您对.js.erb视图提出的AJAX请求。 我想您会发现您没有传递search参数的值。

如果您的JavaScript修复不明显,请继续将其添加到您的问题中,我们会帮助您进行调试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM