【发布时间】:2020-05-17 06:23:14
【问题描述】:
基本设置工作:
翻译/_edit_single_translation.html.erb
<div id="modalContent" class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body"></div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
layouts/application.html.erb 包含:
<%= render 'translations/edit_single_translation' %>
<div id="modal-window" class="modal hide fade modal-backdrop" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div id="modalDialog" class="modal-dialog" role="document">
Content comes here
</div>
</div>
链接:
link_to "Translate Link", translations_edit_path(:locale => locale,: key => key), local: true)
这样就可以了
从我删除的 applications.html.erb 中:
<%= render 'translations/edit_single_translation' %>
并将链接更改为:
link_to "Translate Link", translations_edit_path(:locale => locale,: key => key), remote: true)
在 javascript/packs/modal-action.js 我放:
$("#modal-window").find(".modal-content").html("<%= j (render partial: 'translations/edit_single_translation') %>");
$("#modal-window").modal('show');
现在它不起作用。
添加时:
alert(\'<%= j (render partial: "translations/edit_single_translation") %>')
到模态动作。我收到了<%= j (render partial: "translations/edit_single_translation") %> 的警报
我错过了什么?
[编辑]
我发现调用了“show”方法。谷歌搜索一两天,我发现不是:
respond_to do |format|
format.js
format.html
end
我不得不说:
respond_to do |format|
format.js { render :layout => false }
format.html
end
在翻译的“显示”方法中。
然后我不得不搬家
$("#modalDialog").html('<%= j (render partial: 'edit', locals: { items: @translation } ) %>');
$('#modal-window').modal();
从javascript/packs/modal-action.js 到translations\show.js.erb
为了进行添加和更新工作,我将所有翻译放在一个跨度中,键为 id。 添加或编辑后更新相应的翻译并关闭我放置的模式:
$('#<%= params[:key].gsub(".","_") %>').html('<%= params[:value] %>');
$('#modal-window').modal('hide');
在translations\create.js.erb
和
$('#<%= params[:i18n_backend_active_record_translation][:key].gsub(".","_") %>').html('<%= params[:i18n_backend_active_record_translation][:value] %>');
$('#modal-window').modal('hide');
在translations\update.js.erb
我的添加表单是 form_with,编辑是 form_for
我的translations_controler.erb 包含:
class TranslationsController < ApplicationController
def index
end
def show
@translation = Translation.find_by(:locale => find_locale,
:key => params[:key])
@key = params[:key]
if @translation.nil?
@Translation = Translation.new
end
respond_to do |format|
format.js { render :layout => false }
format.html
end
end
def new
end
def create
@translation = Translation.create(translation_create_params)
respond_to do |format|
if @translation.save
I18n.backend.reload!
format.json { head :no_content }
format.js
else
format.json { render json: @customer.errors.full_messages,
status: :unprocessable_entity }
end
end
end
def edit
end
def update
respond_to do |format|
@translation = Translation.find(t_id)
if @translation.update(translation_update_params)
I18n.backend.reload!
format.json { head :no_content }
format.js { }
else
format.json { render json: @translation.errors.full_messages,
status: :unprocessable_entity }
end
end
end
private
def t_id
params[:i18n_backend_active_record_translation][:id]
end
def find_locale
params[:locale].nil? ? I18n.default_locale : params[:locale]
end
def translation_update_params
params.require(:i18n_backend_active_record_translation).permit(:locale,
:key, :value)
end
def translation_create_params
params.permit(:locale, :key, :value)
end
end
现在模态正在工作:) :)。
【问题讨论】:
标签: javascript jquery ruby-on-rails bootstrap-modal