【问题标题】:how to pass parameters in page如何在页面中传递参数
【发布时间】:2018-11-27 04:51:25
【问题描述】:

我有这个页面(称为“页面”)。我尝试使用 <%= link_to page.title, page_path(page.id) %> 通过 id 调用这些页面,但我想使用参数调用这些页面,我不希望它们的链接像 http://localhost:3000/pages/6 那样直接,但我希望 id 6 通过参数,所以我会有一个类似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 %>

【问题讨论】:

  • 使用index 操作,然后在您的参数存在时调用show

标签: ruby-on-rails ruby ruby-on-rails-4 ruby-on-rails-5


【解决方案1】:

可能有很多方法可以做到这一点,我的方法如下。


更改pages_controllerindex 操作如下

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

如下更改pages_controllershow动作

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

并在link_to函数中传递页面id如下

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

希望这能解决你的问题。

【讨论】:

  • 我希望页面在点击标题时打开,而不是类别列表,我只希望页面通过参数传递
  • 当我点击页面标题时,它带我到同一个页面,我怎样才能让它带我到另一个页面
  • 我发布了我的完整控制器,如果它可以帮助你帮助我
猜你喜欢
  • 1970-01-01
  • 2012-09-16
  • 1970-01-01
  • 1970-01-01
  • 2021-07-07
  • 2012-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多