我正在构建单页(Web)应用程序.我对Rails v5.0非常感兴趣,特别是它的内置API功能.
在过去,我已经构建了JavaScript前端Vue.js,通常使用提供的模板Vue-CLI project.这允许Vue component-based基本上在任何地方部署静态站点.这很棒.
现在,Rails 5.1有一些内置的Webpack和Yarn功能看起来非常引人注目.我不知道如何继续我的新申请.
我的问题:
- 使用Rails v5.1中提供的Webpacker扩展,将Webpack和Vue集成到Rails中的优缺点是什么?我打算部署到Heroku.
- 另一方面,在后端使用Rails API-only模式的优缺点是什么,并将基于Vue/Webpack的前端保存在自己的目录中?我将所有内容保存在同一个存储库中,通过Heroku部署后端,并通过像Netlify这样的静态主机部署前端.
- 哪种方法会有更多的认知开销或技术复杂性?
在过去的几天里,我一直在四处寻找,而且我没有在网上找到关于此的简明信息.人们似乎对Rails开发环境的自动重新加载功能感兴趣,但我已经使用Vue-CLI免费获得了这些功能.
据我所知,这些是将它们分开的原因:
- 在任何地方部署前端都非常简单.
- Rails的Webpacker模式非常新,目前还没有很多教程或指南,特别是关于集成测试.将事物分开意味着我现有的测试设备仍应适用.
以下是将两个部分集成在一起的一些优点:
- 如果有必要,可以在前端使用静态资产,也可以在将来使用服务器生成的页面.
- 购买"Rails方式",Rails团队隐含的未来维护.
- JS Frontend不需要单独托管.
- 不需要担心CORS(?)
这两种方法还有哪些具体的好处?
ruby-on-rails single-page-application rails-api webpack vue.js
我试图解析与json的rails活动记录关系.
jQuery('.user_form').data('mydata', '<%= raw User.all.to_json %>');
var myPersonalData = JSON.parse(jQuery('.user_form').data('mydata'));
Run Code Online (Sandbox Code Playgroud)
这是我的rails对象
'"[{\"id\":1,\"email\":\"1@2.com\",\"created_at\":\"2016-02-24T12:39:29.184Z\",\"updated_at\":\"2016-02-24T12:39:29.184Z\",\"username\":\"xyz's\",\"skypeid\":null},{\"id\":2,\"email\":\"3@2.com\",\"created_at\":\"2016-02-24T12:39:41.455Z\",\"updated_at\":\"2016-02-24T12:39:41.455Z\",\"username\":\"abs's\",\"skypeid\":null}]"'
Run Code Online (Sandbox Code Playgroud)
这个问题是在用户名列中,值包含"'"(撇号),它打破了单引号和双引号的链,因此在从javascript解析它时会抛出错误.
SyntaxError: missing ) after argument list path/to/file:linenumber
Run Code Online (Sandbox Code Playgroud)
这个问题是'<%= raw User.all.to_json%>'它被转换为
' "object_attribut\": \" value_with'apostrophe" '
Run Code Online (Sandbox Code Playgroud)
因此,'逃脱之后的部分.
任何帮助表示赞赏.提前致谢.
我有一个 Ruby on Rails 应用程序来处理用户收入,决定它是津贴还是收入并应用适当的税率。我已经包含了一些enums执行基本功能的内容,如下所述。
当我从默认值开始更新时,我遇到了问题“1”不是有效的收入类型。
您可以在下面看到设置,包括模型、控制器和表单。
模型 :
class Income < ApplicationRecord
enum incomeType: {income: 0, allowance: 1 }
enum taxed: {yes: 0, no: 1 }
belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)
控制器:
class IncomesController < ApplicationController
before_action :set_income, only: [:show, :edit, :update, :destroy]
# GET /incomes
# GET /incomes.json
def index
@incomes = current_user.incomes.all
end
# GET /incomes/1
# GET /incomes/1.json
def show
end
# GET /incomes/new
def new
@income = current_user.incomes.build
end
# GET /incomes/1/edit
def edit
end …Run Code Online (Sandbox Code Playgroud) 我有一个名为User的实体,我想创建一个DateTime字段。
我的课:
<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity(repositoryClass="App\Repository\UserRepository")
*/
class User
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=250)
*/
private $firstName;
/**
* @ORM\Column(type="string", length=250)
*/
private $lastName;
/**
* @ORM\Column(type="string", length=250, nullable = true)
*/
private $userName;
/**
* @ORM\Column(type="string", length=50)
*/
private $email;
/**
* @ORM\Column(type="string", length=20)
*/
private $password;
/**
*@Assert\DateTime()
*/
private $regData;
// GETTERS AND SETTERS
}
Run Code Online (Sandbox Code Playgroud)
运行时php …