错误的图像 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.pngupdate_user.html.erb 是错误的 profile/assets/form_images/calendar.png。为什么会这样显示?我在这里做错了什么?

那是因为,您正在使用配置文件嵌套属性并且 rails 正在附加 配置文件 路径。通过像 filename.js.erb 一样附加 .erb 来重命名您的 JS 文件,并像下面这样替换 buttonImage 代码并尝试。

buttonImage: "<%= asset_path('form_images/calendar.png') %>";