>我正在使用一个部分,它以属于两个不同控制器的两种形式呈现,如下所示:
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 %>
部分字段如下:
部分.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 正在附加配置文件路径。通过附加 .erb 重命名您的 JS 文件,例如文件名.js.erb并替换按钮图像代码,如下所示并尝试。
buttonImage: "<%= asset_path('form_images/calendar.png') %>";