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'));
不是最好的解决方案,但我可以使用它。
在一个较旧的项目中,我使用了这个 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'));
不是最好的解决方案,但我可以使用它。