Rails & Handlebars:模板的错误 URI 错误 URL

Rails & Handlebars: bad URI error for template URL

在一个较旧的项目中,我使用了这个 Handlebars 模板:

script id='user-form-template' type='text/x-handlebars-template'
  = simple_form_for User.new, method: 'post', url: '/users/{{id}}' do |f|
    = hidden_field_tag :_method, '{{method}}'
    = f.input :name
    = f.input :email
    ...

此操作在 Handlebars 模板中创建了一个表单:

action="/users/{{id}}"

我用它来创建新的 (将 id 留空,将 _method 设置为 POST) 并编辑现有的 (设置 id,将 _method 设置为补丁) 用户。

在我的新项目 (Rails 5.2.1) 中,我收到一条 URI::InvalidURIError 消息:

bad URI(is not URI?): /users/{{id}}

有没有更好的方法来构建带有表单的模板?我想让 SimpleForm 自动创建 bootstrap 表单 HTML.

既然你在做 simple_form_for User.new,而不是 simple_form_for @existing_user,我敢打赌你需要删除 URL 的 /{{id}} 部分。如果您正在尝试创建一个新用户,您希望 post 仅 /users.

我把模板改成了

= simple_form_for User.new, method: 'post', data: { url: '/users/{{id}}' }

然后我在替换模板中的占位符后将 data-url 改回 url

$('form').attr('action', $('form').data('url'));

不是最好的解决方案,但我可以使用它。