9

我正在尝试保存一个名为persistent_data.

我通常使用session[:persistent_data]or cookies[:persistent_data],但我想改用 localstorage 。

我如何在 Rails 上做到这一点?

4

4 回答 4

7

Localstorage 与 Rails 无关。您可以像使用任何其他语言一样执行此操作:

<script>
localStorage.setItem("company_id", "1");
</script>

localStorage.getItem("company_id");
=> 1

但是,您可以使用 rails 动态设置项目:

<script>
localStorage.setItem("company_id", "<%= @company.id %>");
</script>
于 2012-10-09T18:48:25.160 回答
2

这很简单,需要了解本地存储的工作原理。

您可以直接执行此操作,或者(这可能更清洁)使用 setItem() 和 getItem() 方法:

localStorage.setItem('color','blue');

如果你读出颜色键,你会得到“蓝色”:

localStorage.getItem('color');`// output will be blue`

要删除项目,您可以使用 removeItem() 方法:

localStorage.removeItem('color');

烦人的事情是当你有一个数组时,它不会以正确的方式存储。

var car = {};
car.wheels = 4;
car.doors = 2;
car.sound = 'vroom';
car.name = 'Suzuki Mehran';
console.log( car );
localStorage.setItem( 'car', car );
console.log( localStorage.getItem( 'car' ) ); //output as `[object Object]`

但不必担心,我们也有解决方案。您可以使用本机 JSON.stringify() 和 JSON.parse() 方法解决此问题:

localStorage.setItem( 'car', JSON.stringify(car) );

你可以简单地把它拿回来

JSON.parse( localStorage.getItem( car ) );

希望你现在没有任何困惑!

于 2019-10-03T07:24:29.020 回答
1

据我所知,localStorage 与 Rails 无关,它是纯 Javascript/HTML5 功能。

您可以在应用程序 js 中使用以下内容,以便从本地存储读取或写入数据:

var foo = localStorage.getItem("bar");
localStorage.setItem("bar", foo);
于 2012-10-09T18:43:57.390 回答
0

正如其他人已经说过的那样,本地存储是 Javascript/Html 功能/解决方案,但如果想了解如何将其与 Rails 集成,Ryan Bates 在http://railscasts.com/episodes/248-offline-apps-part-2上有一个 railscast ,尽管您可能需要观看第 1 部分才能完全理解它。

于 2012-10-09T19:07:23.100 回答