Ruby on rails 参数散列对控制器方法不可用,但在视图中可见
我正在Rails 4应用程序中使用Twitter引导的导航栏搜索框。我的表单如下所示:Ruby on rails 参数散列对控制器方法不可用,但在视图中可见,ruby-on-rails,twitter-bootstrap,Ruby On Rails,Twitter Bootstrap,我正在Rails 4应用程序中使用Twitter引导的导航栏搜索框。我的表单如下所示: <form class="navbar-form navbar-right" action="/search" method="get" role="search"> <div class="form-group"> <input type="text" class="form-control" placeholder="know what you want?"
<form class="navbar-form navbar-right" action="/search" method="get" role="search">
<div class="form-group">
<input type="text" class="form-control" placeholder="know what you want?" name="q">
</div>
<button type="submit" class="btn btn-default">find it!</button>
</form>
我的看法是:
<%= @temp %>
当我填写文本框并单击提交时,url会发生变化,我可以看到如下查询字符串:
http://localhost:3000/search?q=blah
问题是,@temp在视图中显示时是一个空变量
在视图中执行此操作时:
<%= params.inspect %>
在Rails 4中,您必须允许您的参数 顺便说一句,您应该将路由语法更改为:
get "search" => "dynamic_pages#search"
我唯一能建议的是,
param
可能在控制器中可用;也许@temp
是一个保留变量名还是什么
我会立即尝试以下方法:
@temp
其他内容#app/controllers/dynamic_pages_controller.rb
Class DynamicPagesController < ApplicationController
def search
Rails.logger.info(params.inspect())
@query = params[:q]
end
end
#app/controllers/dynamic_pages_controller.rb
类DynamicPagesController
这将在Rails日志中输出控制器中的参数,同时为您提供不同的变量名。如果有人无意中发现,我通过移动搜索操作解决了这个问题,使其成为dynamic_pages控制器中的第一个方法。能否显示控制台的输出?能否发布参数哈希?我已编辑了我的问题以显示控制台的输出。由于某种原因,它不再工作了。如果他直接调用参数,这不应该是一个很强的参数问题。
Started GET "/search?q=blah" for 127.0.0.1 at 2014-07-25 08:43:43 -0700
Processing by DynamicPagesController#search as HTML
Parameters: {"q"=>"blah"}
Rendered dynamic_pages/search.html.erb within layouts/application (0.1ms)
Rendered layouts/_shim.html.erb (0.0ms)
Rendered layouts/_header.html.erb (0.2ms)
Rendered layouts/_footer.html.erb (0.1ms)
Completed 200 OK in 22ms (Views: 21.2ms | ActiveRecord: 0.0ms)
get "search" => "dynamic_pages#search"
#app/controllers/dynamic_pages_controller.rb
Class DynamicPagesController < ApplicationController
def search
Rails.logger.info(params.inspect())
@query = params[:q]
end
end