关于Rails4的问题,我试图以erb形式检索“Find Stuff”变量。这个 是一个搜索领域,使用zurb基础 - 所以额外的样式注释浮动。 我没有模型,因为这只是一个用于读取搜索输入字段的表单 - 即 在标记中,占位符为“查找资料”。
要使用普通的Rails4术语,我会的
喜欢将“查找东西”字段的值传递给称呼控制器,我试过了
很多方法,但是不成功,当我使用渲染参数[:post]。在这个时候,它显示为nil -the
传递给控制器的变量,点击“搜索”link_to,链接。我尝试在标记中添加一个id字段,并且在render params [:post] .inspect上也显示为nil。
任何帮助,谢谢你的期待。
下面的hello.html.erb表单。
<html>
<body>
<nav class="top-bar" data-topbar>
<ul class="title-area">
<li class="name">
<h1><a href="#">Hello World!</a></h1>
</li>
<li class="toggle-topbar menu-icon"><a href="#"><span>Menu</span></a>
</li>
</ul>
<ul class="right">
<li class="has-form">
<div class="row collapse">
<div class="large-8 small-9 columns">
<input type="text" placeholder="Find Stuff" >
</div>
<div class="large-4 small-3 columns">
<%= link_to "", :controller =>
'salutation', :action =>'hello',
:class=>"alert button expand" %>
</div>
</div>
</li>
</ul>
</section>
</nav>
</body>
</html>
Controller follows
Salutation Controller follows
class SalutationController < ApplicationController
def new
@test = ''
end
def hello
@message = 'Hello World!'
@test = params[:Find_Stuff]
end
end
答案 0 :(得分:3)
将您的搜索框包装在表单元素中,为您的输入命名,然后离开。您也可以使用rails表单助手 - 请参阅http://guides.rubyonrails.org/form_helpers.html,其中有一个很好的介绍来创建搜索表单
<div class="row collapse">
<%= form_tag("/salutation/hello", method: "post") do %>
<div class="large-8 small-9 columns">
<%= text_field_tag(:find_stuff) %>
</div>
<div class="large-4 small-3 columns">
<%= submit_tag("Search") %>
</div>
<% end %>
</div>
答案 1 :(得分:0)
继@slapthelownote
的答案之后,您收到错误的原因是因为您没有将任何参数传递给您的控制器
我们已经在http://firststopcosmeticshop.co.uk(热门搜索框)中使用了form_tag
如果您想查看实时代码,我们很乐意发帖!
<强> PARAMS 强>
使用form
可以设置各种变量&amp;然后在你设置它们时将它们提交给控制器。我建议在其他答案中使用该表单,但要了解其工作原理,您需要阅读Rails forms tutorial
基本上,params
哈希填充在Rails的中间件中 - 从HTTP发送到后端的任何数据
使用链接,您只能发送GET
参数(domain.com/route¶ms=value
),而使用HTML表单,您可以设置通过浏览器传递的POST
参数(而非URL)< / p>