プロジェクトにpjax-railsgemを使用しようとしています。
gemからredirectメソッドを使用する場合。ブラウザは応答をテキストとしてレンダリングします。script/javascriptの代わりにtext/javascriptを想定しています。
これが私のコントローラーの外観です(redirect_to_pjaxに注意してください):
def create
@contact = Contact.new params[:contact]
if @contact.save
flash[:notice] = "Successfully added contact"
redirect_pjax_to :show,@contact
end
これは宝石ですhttps://github.com/rails/pjax_rails
これは、メソッド「redirect_pjax_to」の元の実装です。魔法はここで発生すると思います...(githubから取得)
private
def redirect_pjax_to(action, url = nil)
new_url = url_for(url ? url : { action: action })
render js: <<-EJS
if (!window.history || !window.history.pushState) {
window.location.href = '#{new_url}';
} else {
$('[data-pjax-container]').html(#{render_to_string("#{action}.html.erb", layout: false).to_json});
$(document).trigger('end.pjax');
var title = $.trim($('[data-pjax-container]').find('title').remove().text());
if (title) document.title = title;
window.history.pushState({}, document.title, '#{new_url}');
}
EJS
end
ここでrender:jsにはcontent_typeが必要だと思います...
誰かが同じ問題を抱えていますか?またはより良い解決策はありますか?