错误的图像 url 为一种形式传递并从 Rails 中的部分更正为另一种形式 4
Wrong image url is passed for one form and correct to another form from partial in Rails 4
我正在使用以属于两个不同控制器的两种形式呈现的部分,如下所示:
update_user.html.erb
<%= form_with model: @user,
url: {
controller: :profile,
action: :update_user
},
method: :post,
local: true do |f| %>
<%= render partial: 'shared/user_registration_fields', locals: { f: f, profile: @profile } %>
<%= f.submit 'Confirm' %>
<% end %>
new_user.html.erb
<%= form_for @user,
url: {
action: :register_user
},
method: :post,
local: true do |f| %>
<%= render partial: 'shared/user_registration_fields', locals: { f: f, profile: @profile } %>
<%= f.submit 'Confirm' %>
<% end %>
部分字段如下:
partial.html.erb
<%= f.fields_for :profile, profile do |prform| %>
<%= prform.label :date_of_birth, 'DOB' %><br />
<%= prform.text_field :date_of_birth, { class: 'datepicker', title: "Date_of_birth", value: (f.object.date_of_birth.strftime("%d-%m-%Y") if f.object.date_of_birth.present?) } %>
图像使用 jquery 渲染如下:
$( ".datepicker" ).datepicker({
showOn: "button",
buttonImage: "assets/form_images/calendar.png",
buttonImageOnly: true,
buttonText: "Select date of birth",
dateFormat: 'dd-mm-yy',
});
第一个表格在以下路径 -> app/views/profile/update_user.html.erb
第二种形式在以下路径 -> app/views/login/new_user.html.erb
部分在以下路径中 -> app/views/shared/_partial.html.erb
现在图像 assets/form_images/calendar.png
显示在此文件 new_user.html.erb
中,但未显示在此 update_user.html.erb
中。当我从浏览器检查图像 url 时,new_user.html.erb
是正确的 assets/form_images/calendar.png
但 update_user.html.erb
是错误的 profile/assets/form_images/calendar.png
。为什么会这样显示?我在这里做错了什么?
那是因为,您正在使用配置文件嵌套属性并且 rails 正在附加 配置文件 路径。通过像 filename.js.erb 一样附加 .erb 来重命名您的 JS 文件,并像下面这样替换 buttonImage 代码并尝试。
buttonImage: "<%= asset_path('form_images/calendar.png') %>";
我正在使用以属于两个不同控制器的两种形式呈现的部分,如下所示:
update_user.html.erb
<%= form_with model: @user,
url: {
controller: :profile,
action: :update_user
},
method: :post,
local: true do |f| %>
<%= render partial: 'shared/user_registration_fields', locals: { f: f, profile: @profile } %>
<%= f.submit 'Confirm' %>
<% end %>
new_user.html.erb
<%= form_for @user,
url: {
action: :register_user
},
method: :post,
local: true do |f| %>
<%= render partial: 'shared/user_registration_fields', locals: { f: f, profile: @profile } %>
<%= f.submit 'Confirm' %>
<% end %>
部分字段如下:
partial.html.erb
<%= f.fields_for :profile, profile do |prform| %>
<%= prform.label :date_of_birth, 'DOB' %><br />
<%= prform.text_field :date_of_birth, { class: 'datepicker', title: "Date_of_birth", value: (f.object.date_of_birth.strftime("%d-%m-%Y") if f.object.date_of_birth.present?) } %>
图像使用 jquery 渲染如下:
$( ".datepicker" ).datepicker({
showOn: "button",
buttonImage: "assets/form_images/calendar.png",
buttonImageOnly: true,
buttonText: "Select date of birth",
dateFormat: 'dd-mm-yy',
});
第一个表格在以下路径 -> app/views/profile/update_user.html.erb 第二种形式在以下路径 -> app/views/login/new_user.html.erb 部分在以下路径中 -> app/views/shared/_partial.html.erb
现在图像 assets/form_images/calendar.png
显示在此文件 new_user.html.erb
中,但未显示在此 update_user.html.erb
中。当我从浏览器检查图像 url 时,new_user.html.erb
是正确的 assets/form_images/calendar.png
但 update_user.html.erb
是错误的 profile/assets/form_images/calendar.png
。为什么会这样显示?我在这里做错了什么?
那是因为,您正在使用配置文件嵌套属性并且 rails 正在附加 配置文件 路径。通过像 filename.js.erb 一样附加 .erb 来重命名您的 JS 文件,并像下面这样替换 buttonImage 代码并尝试。
buttonImage: "<%= asset_path('form_images/calendar.png') %>";