如何通过查询生成网址
例如http://localhost:3000/articles
我想要的是,此URL可以与查询一起加载
例如articles?author="author_name"
我应该在控制器中做什么?
编辑:article_controller
def index
@articles = Article.all
end
路线
resources :authors
resources :articles
resources :categories
视图
<% @articles.each do |article| %>
<tr>
<td><%= article.no_urut %></td>
<td><%= article.judul_artikel %></td>
<td><%= article.konten %></td>
<td><%= article.category.nama_kategori %></td>
<td><%= article.author.author_name %></td>
<td><%= link_to 'Show', article %></td>
<td><%= link_to 'Edit', edit_article_path(article) %></td>
<td><%= link_to 'Destroy', article, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
答案 0 :(得分:0)
您无需在控制器中执行任何操作,因为articles_path
的rails URL路径将路由到http://localhost:3000/articles
(提供了正确的路由)
因此,可以通过articles_path(author: 'author_name')
传递任何键值,并以控制器params[:author_name]
的身份对其进行访问
更新:如果您想通过提供姓名来吸引作者,这是搜索功能,可以使用ranksack
高效地完成。请参考this查看结果视图
答案 1 :(得分:0)
如雷所说,如果您添加:
<%= link_to articles_path(author: "name_here") %>
将生成网址http://localhost:3000/articles?author=name_here
您可能会发现使用gem可以更轻松地实现按作者姓名搜索文章,但是,如果您只是想在ArticlesController中手动执行此操作,则可以:
def index
if params[:author]
@author = params[:author]
@articles = Article.all.where(author: @author)
else
@articles = Article.all
end
end