阅读erb表单字段,Rails4

时间:2014-04-03 07:44:30

标签: ruby-on-rails ruby

关于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

2 个答案:

答案 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&params=value),而使用HTML表单,您可以设置通过浏览器传递的POST参数(而非URL)< / p>