我正在使用太阳黑子solr来搜索我的Ruby on Rails应用程序。我创建了一个新的搜索路径,控制器并提取我想要搜索的工具模型和库存模型。
但是,我找不到将搜索控制器渲染回root_path和/或root_url的方法。我尝试了很多不同的组合,并检查了这篇文章:
http://guides.rubyonrails.org/layouts_and_rendering.html
现在搜索控制器如下:
class SearchesController < ApplicationController
def index
@tools = Tool.search do
keywords params[:query]
end.results
@inventories = Inventory.search do
keywords params[:query]
end.results
format.html { render template: "home" }
end
end
渲染模板:“home”无效。如果有人知道如何将其重定向到有用的根路径。
错误信息是:
SearchesController #index中的ArgumentError 论点太少了。
答案 0 :(得分:1)
format
本地变量未在index
操作中定义,导致错误ArgumentError in SearchesController#index too few arguments.
您需要做的是,在format.html
方法调用中附上respond_to
:
respond_to do |format| ## format is defined here
format.html { render template: "home" }
end
或者,当您以html
格式呈现视图时,可以直接使用
render template: "home" ## Removed format.html {}
此外,在从另一个控制器渲染Action的模板时使用template
选项,即
如果您在位于SearchesController
目录中的app/controllers
中运行代码,则可以将操作home
的结果呈现给app/views/welcome
中的模板,如下所示:
render template: "welcome/home"
重点是你要么
在错误的上下文中使用template
选项,即如果home
本身存在SearchesController
操作,则您应该执行
render action: "home"
-OR-
you just forgot to add the view path in front of
主页,即如果home
操作属于WelcomeController
且home
视图位于app/views/home
下,那么您应该指定
render template: "welcome/home"
答案 1 :(得分:1)
工具/索引有效!
class SearchesController < ApplicationController
def index
@tools = Tool.search do
keywords params[:query]
end.results
@inventories = Inventory.search do
keywords params[:query]
end.results
respond_to do |format|
format.html { render template: "tools/index" }
end
end
end
答案 2 :(得分:0)
你可以像这样使用redirect_to:
redirect_to '/your_route/to_home'