как передать параметры на странице - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть эта страница (называется "страница").Я пытался вызывать эти страницы по идентификатору с <%= link_to page.title, page_path(page.id) %>, который работает, но я хочу вызывать эти страницы с помощью параметров, я не хочу, чтобы их ссылки были прямыми, как http://localhost:3000/pages/6, но я хочу, чтобы этот идентификатор 6 былчерез params, поэтому у меня будет ссылка типа http://localhost:3000/pages?category_id=1.

Вот мой контроллер страниц

    class PagesController < ApplicationController
  def show
    @pages = Page.find(params[:id])
  end

  def all
    @category = Category.find_by(id: params[:category_id])
    @pages = @category.pages
  end

  def index
    if params[:id].present?
      show
    else
     #Code of index action
     @pages = Page.all
    end
  end
end

и мой show.html.erb

<%= @page.title %>
<%= @page.body %>

а затем ссылка на эту страницу

<% @pages.each do |page| %>
  <h4>
    <b>
      <%= link_to page.title, page_path(page.id)%>
    </b>
  </h4>
<% end %>

1 Ответ

0 голосов
/ 27 ноября 2018

Может быть много способов сделать это, и мой путь следующий:


Изменить index действие pages_controller следующим образом

def index
  if params[:id].present?
    show
  else
   #Code of index action
   @pages = Page.all
  end
end

Изменить show действие pages_controller следующим образом

def show
  @page = Page.find(params[:id])
end

и передача страницы id в link_to функции следующим образом

<% @pages.each do |page| %>
  <h4><b><%= link_to page.title, pages_path(:id => page.id)%> </b></h4>
  #<h4><b><a href="/pages?id=page_number">Page Title</a></b></h4>
<% end %>

Я надеюсь, что это решит вашу проблему.

...