Rails 5 Query from url-адрес с параметрами - PullRequest
0 голосов
/ 07 февраля 2019

Как я могу сгенерировать URL с запросом

, например http://localhost:3000/articles

, что я хочу, этот URL можно загрузить с запросом

например, articles?author="author_name"

что мне делать в моем контроллере?

edit: article_controller

def index
@articles = Article.all
end

route

resources :authors
resources :articles
resources :categories

view

<% @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 %>

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Как сказал Рэй, если вы добавите:

<%= link_to articles_path(author: "name_here") %>

, который сгенерирует URL http://localhost:3000/articles?author=name_here

Возможно, вам будет проще использовать гем, чтобы легко реализовать поиск по статьямпо имени автора, но если вы просто хотите сделать это вручную в вашем ArticlesController:

def index
  if params[:author]
    @author = params[:author]
    @articles = Article.all.where(author: @author)
  else
    @articles = Article.all
  end
end
0 голосов
/ 07 февраля 2019

Вам не нужно ничего делать в контроллере, так как articles_path путь URL-адреса rails будет направлять на http://localhost:3000/articles (при условии правильных маршрутов)

Таким образом, передача любого значения ключа будет в порядке с articles_path(author: 'author_name') и доступомэто в действии контроллера как params[:author_name]

Обновление: Если вы хотите получить авторов в индексе, указав имя, это функция поиска и может быть эффективно выполнена с помощью ranksack

Пожалуйста, обратитесь к этому , чтобы увидеть результирующее представление

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...