Ruby on rails 从应用程序\控制器渲染视图

Ruby on rails 从应用程序\控制器渲染视图,ruby-on-rails,Ruby On Rails,所以,我有搜索表单,搜索显然可以从任何页面进行。 我认为这样做是有道理的,应用程序控制器的此类操作被放置在layouts/views文件夹中。 但我就是不明白——Rails看不到。所以我不能这么做?那么,我应该如何提供可从任何页面获得的操作? 代码: 路线: search_tests GET /search_tests(.:format) application#tests_search 表格: 我建议使用其他控制器来执行此操作。例如,它可以是SearchCon

所以,我有搜索表单,搜索显然可以从任何页面进行。 我认为这样做是有道理的,应用程序控制器的此类操作被放置在layouts/views文件夹中。 但我就是不明白——Rails看不到。所以我不能这么做?那么,我应该如何提供可从任何页面获得的操作? 代码:

路线:

 search_tests GET    /search_tests(.:format)             application#tests_search
表格:


我建议使用其他控制器来执行此操作。例如,它可以是
SearchController
,即使只有一种方法

请注意,
ApplicationController
是默认情况下应用程序中每个其他控制器继承的控制器。因此,如果不是这样的话,它可能是有意义的,但是现在每个控制器都将继承您的
test\u search
操作,这是不需要的


如果您的搜索表单是部分的,那么无论是在
ApplicationController中还是在任何其他控制器中,都没有区别。您只需指向正确的路线。

我建议使用其他控制器来执行此操作。例如,它可以是
SearchController
,即使只有一种方法

请注意,
ApplicationController
是默认情况下应用程序中每个其他控制器继承的控制器。因此,如果不是这样的话,它可能是有意义的,但是现在每个控制器都将继承您的
test\u search
操作,这是不需要的


如果您的搜索表单是部分的,那么无论是在
ApplicationController中还是在任何其他控制器中,都没有区别。您只需指向正确的路线。

首先,您必须解释流程。您需要的是在所有页面上呈现的部分内容,如果用户向其中添加一些输入并提交,他将获得一些输出。对吗?好。因此,您首先在中的某个位置创建一个新的分部

app/views/shared/_search.html.erb
然后,在routes.rb中创建路由以指向控制器的操作。您不必将其放置在应用程序控制器中。相反,创建search_controller.rb并创建一些响应表单提交的操作

每当您希望在其他页面上呈现搜索表单时,只需使用以下命令调用render partial()

<%= render "shared/search" %>

祝你好运。

一开始,你必须解释一下流程。您需要的是在所有页面上呈现的部分内容,如果用户向其中添加一些输入并提交,他将获得一些输出。对吗?好。因此,您首先在中的某个位置创建一个新的分部

app/views/shared/_search.html.erb
然后,在routes.rb中创建路由以指向控制器的操作。您不必将其放置在应用程序控制器中。相反,创建search_controller.rb并创建一些响应表单提交的操作

每当您希望在其他页面上呈现搜索表单时,只需使用以下命令调用render partial()

<%= render "shared/search" %>

祝你好运。

你应该创建一个新的搜索控制器。使用
rails g controller search index
,它将创建一个带有
index
操作的搜索控制器(您也可以将该操作称为
result
)。然后在搜索视图文件夹中添加一个
search/_form.html.erb
文件,格式如下:

 <%= form_tag search_path, {:id=>'test_search',:method => :get} do |f| %>

这样,您在任何页面上都有一个搜索表单,它使用
SearchController
来处理搜索请求。

您应该创建一个新的搜索控制器。使用
rails g controller search index
,它将创建一个带有
index
操作的搜索控制器(您也可以将该操作称为
result
)。然后在搜索视图文件夹中添加一个
search/_form.html.erb
文件,格式如下:

 <%= form_tag search_path, {:id=>'test_search',:method => :get} do |f| %>

这样,您在任何页面上都有一个搜索表单,它使用
SearchController
来处理搜索请求。

尝试重新启动服务器可能是应用程序#控制器#测试(搜索=>视图应放在app/views/application/test)search.html.erb中。或者你的问题是什么?:)尝试重新启动服务器可能是应用程序#控制器#测试(u search=>视图应放在app/views/application/test_search.html.erb中。或者你的问题是什么?:)
 <%= form_tag search_path, {:id=>'test_search',:method => :get} do |f| %>
<%= render "search/form" %>