在我的工作中,我们正在分手我们的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
完成此操作的唯一方法吗?
答案 0 :(得分:1)
您实际上是在定义重定向:
localhost:4000/users
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