如何在页面中传递参数

时间:2018-11-27 04:51:25

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

我有此页面(称为“页面”)。我尝试使用<%= link_to page.title, page_path(page.id) %>通过id调用这些页面,但是可以,但是我想使用params来调用这些页面,我不希望它们的链接像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 %>

1 个答案:

答案 0 :(得分:0)

执行此操作的方法可能很多,我的方法如下。


按以下步骤更改//instead of qTip you can also use popper.js with tippy 的{​​{1}}操作

using Type;

class Multimorph {

    public static inline function value ( value : AnyAny ) {
        return value.enumParameters () [ 0 ];
    }

    public static inline function position ( value : AnyAny ) {
        return value.enumIndex ();
    }

}

typedef Any2 = Of2<Dynamic, Dynamic>;
typedef Any3 = Of3<Dynamic, Dynamic, Dynamic>;

enum About2 <A, B> {
    PosA ( value : A );
    PosB ( value : B );
}
enum About3 <A, B, C> {
    PosA ( value : A );
    PosB ( value : B );
    PosC ( value : C );
}

abstract Of2 <A, B> ( About2<A, B> ) from About2<A, B> to About2<A, B> {
    @:from static inline function from_A <A, B> ( val : A ) : Of2<A, B> return About2.PosA ( val );
    @:from static inline function from_B <A, B> ( val : B ) : Of2<A, B> return About2.PosB ( val );
    @:to inline function to_A () : Null<A> return switch ( this ) { case About2.PosA ( val ): val; default: null; }
    @:to inline function to_B () : Null<B> return switch ( this ) { case About2.PosB ( val ): val; default: null; }
}
abstract Of3 <A, B, C> ( About3<A, B, C> ) from About3<A, B, C> to About3<A, B, C> {
    @:from static inline function from_A <A, B, C> ( val : A ) : Of3<A, B, C> return About3.PosA ( val );
    @:from static inline function from_B <A, B, C> ( val : B ) : Of3<A, B, C> return About3.PosB ( val );
    @:from static inline function from_C <A, B, C> ( val : C ) : Of3<A, B, C> return About3.PosC ( val );
    @:to inline function to_A () : Null<A> return switch ( this ) { case About3.PosA ( val ): val; default: null; }
    @:to inline function to_B () : Null<B> return switch ( this ) { case About3.PosB ( val ): val; default: null; }
    @:to inline function to_C () : Null<C> return switch ( this ) { case About3.PosC ( val ): val; default: null; }
}

按以下步骤更改Multimorph.value ( v : AnyAny )的{​​{1}}操作

using Multimorph;

class Main {

    static function main () {
        trace ( func ( "Hello World!") );
    }

    static function func ( arg : Of2<Int, String> ) {
        if ( arg.position () == 0 ) {
            return 'Was Passed an Integer `${ arg.value () }`';
        } else {
            return 'Was Passed a String `${ arg.value ()}`';
        }
    }

}

并通过index中的页面pages_controller如下

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

我希望这能解决您的问题。