Rails使用URL参数渲染索引

时间:2017-12-08 18:14:36

标签: ruby-on-rails ruby-on-rails-3

在我的工作中,我们正在分手我们的Rails巨石。我们目前正在通过资产管道为我们的反应应用服务。我正在实施JWT进行身份验证。我试图在网址中传递令牌而不使用会话/ cookie作为模拟用户的管理员的一部分。

class ReactPagesController < ApplicationController
  def index
    render :index #this will open up the react app
  end
end

是否可以在网址中呈现视图并传递参数?

我希望这打开带有url参数的索引页面(即localhost:4000/users?jwt=abc.def.ghi

我尝试过像render :index, jwt: abc.def.ghi这样的事情,但这并不奏效。是通过redirect_to完成此操作的唯一方法吗?

3 个答案:

答案 0 :(得分:1)

您实际上是在定义重定向:

  • 您想转到localhost:4000/users
  • 页面显示索引页面,URL变为localhost:4000/users?id=123

对于普通网页,更改网址会使浏览器重定向。您可以在Chrome控制台中执行此JS时看到结果:

window.location.href = "google.com"

浏览器会将您重定向到google.com

因此,对于Rails的应用程序,应由redirect_to进行重定向,以满足当前的需求。

但是,如果您确实想要在没有重定向的情况下更改URL,则可以通过Javascript进行。只需使用window.history更改您的网址

即可

你的控制器:

# app/controllers/users_controller.rb
def index
  @desired_id = 123
end

和您的观点

<%-# app/views/users/index.html.erb %>
<!-- rest of HTML -->
<script>
  window.history.pushState("", "", "?id=<%= j @desired_id %>");
</script>

答案 1 :(得分:1)

你可以使用redirect_to

    $number_products = get_price_cart_count();
    $productIDsInCart = get_product_ids();

    $throwback_ids = get_post_meta( '13376', 'product_ids', true );
    $throwbackProducts = explode( ',', $throwback_ids );


    $result = array_intersect($throwbackProducts, $productIDsInCart);

    foreach($result as $res){


            add_post_meta( '683934', 'exclude_product_ids',$res);

    }

可以转到redirect_to users_url, id: 5

答案 2 :(得分:0)

我不这么认为,渲染是用于渲染视图而与设置网址无关。 ruby docs