j html <\/option> \ n chiqdi collection_select ko'rsatdi

How can I remove the HTML from showing in collection_select such as the <\/option>\n, <\/select>, <\/div>');

Javascriptdan oldin bu HTML chiqishi :


Javascriptdan so'ng quyidagi HTML chiqishi :


Har qanday holatda ham ko'proq imkoniyatlar bilan yomonlashyapti.

enter image description here

_dueler_fields.html.erb ga o'ting

<%= f.select :user_id, options_for_select(@challengers.collect { |challenger| [challenger.id] }) %>

<%= f.select :challenge_id, options_for_select(@challenger_challenges.collect { |challenged| [challenged.full_challenge, challenged.id] }) %> ,

# The problem occurs only AFTER the JavaScript kicks in and replaces the above line with collection_select(:dueler...
<script>
$('#duel_duelers_attributes_1_user_id').change(function() {
    var user_id = $(this).find(":selected").val();
    var address = "<%= user_challenges_path %>/".concat(user_id);
    $.get(address, function(data) {
        $("#duel_duelers_attributes_1_challenge_id").html(data);
    });
});
</script>

marshrutlarni

  get 'duels/user_challenges/:id', :to => 'duels#user_challenges', as: 'user_challenges'
  get 'duels/user_challenges/:id/:user_id', :to => 'duels#user_challenges', as: 'select'

user_challenges.js.erb

$('#dropdown-no-2').html('<%= j render partial: "user_challenges" %>') 

_user_challenges.html.erb

<%= collection_select(:dueler, :challenge_id, @challenges, :id, :full_challenge, include_blank: true, id: 'dropdown-no-2') %>

AJAX konsoli chiqishi

$('#dropdown-no-2').html('
2
Ha, men bu muammoning ildizini ham bilaman. Buni qanday tuzatishni bilmayman. @Patru chiqdi bilan yangilangan savol
qo'shib qo'ydi muallif AnthonyGalli.com, manba
collection_select (: duatsiya @KcUS_unico
qo'shib qo'ydi muallif AnthonyGalli.com, manba
Fikringizni to'g'ri tushunsangiz, birinchi marta JavaScript-ni ishga tushirgandan so'ng, muammo faqat bo'ladi. Bu, masalaning JavaScript bilan bog'liqligini ehtimolga keltiradi. Ehtimol HTML va keyin oldin JavaScript-ni tegishli qismini JavaScript-ni birinchi qo'ng'iroq qilishingiz kerak.
qo'shib qo'ydi muallif Patru, manba
Puuh Jeez, "HTML chiqishi" chindan ham burchakli ko'rinadi. Ikki marta qochib ketish darajasi ortib borayotgan ko'rinadi. Biroq, bu JavaScript kodining bir qismini tanlash o'rniga "taxminan" bir xil narsa bilan almashtirishni talab qiladi. Qaerda ekanligimni juda ko'ra olmasligimdan qo'rqaman, lekin jQuery ning murakkabligi haqida bilim etishmasligimga bog'liq bo'lishi mumkin. Ehtimol, nima qilmoqchi ekanligingizni bizga aytib berishga harakat qilsangiz, bu qarorni hal qilish osonroq bo'larmidi?
qo'shib qo'ydi muallif Patru, manba
Odatda, bu birinchi navbatda u erda bo'lmasligi kerak. Men skriptning bu sababini ko'rmayapman. Ushbu collection_select qaysi muammoga ega?
qo'shib qo'ydi muallif KcUS_unico, manba

6 javoblar

Xo'sh, sizning html kabi turdagi ko'rinishlaringiz to'g'ri tahlil qilinmaydi. JQuery.parseHTML dan foydalaning va tanlangan kirishga qo'shing.

$.get(address, function(data) {
       var html = $.parseHTML( data );
       $("#duel_duelers_attributes_1_challenge_id").append(html);
});

Sinab ko'rilmadi, lekin uni bir bash bering!

3
qo'shib qo'ydi
OK, talab qilingan. Buni mening savolimga qo'shdim.
qo'shib qo'ydi muallif AnthonyGalli.com, manba
Kechirasiz, buni qanday amalga oshirish mumkin? Terminalda nimani ko'rsatayotgani yoki skriptga qo'shilishi kerak bo'lgan satr mavjudmi yoki kromni ishlab chiquvchi asboblar konsolida nimadir ochilgan deb o'ylaymanmi?
qo'shib qo'ydi muallif AnthonyGalli.com, manba
Men kimdir menga bir oz vaqt bergani uchun men ishonmayman, lekin agar taklifingizni o'zgartirsangiz, u ishlamaydi. O'ylaymanki # dropdown-no-2 belgisini ko'rsatish kerak
qo'shib qo'ydi muallif AnthonyGalli.com, manba
Fikringizni moslash uchun juda ko'p vaqtdan beri sizning savolingiz yangilandi.
qo'shib qo'ydi muallif AnthonyGalli.com, manba
Men rahmimga tushmayman. Buni bir muncha vaqt tushunishga harakat qilmoqdasiz. Foydalanuvchilarni almashtirib bo'lgach, muammolarning HTML chiqishi. Ko'rib turganingizdek, JavaScript haqiqatdan ham tetiklasa ham, brauzerda ba'zi funky xatti-harakatlar sababli ko'rsatilmaydi va buning uchun variant s ko'rsatiladi.
qo'shib qo'ydi muallif AnthonyGalli.com, manba
Afsuski, bu ishni butunlay to'xtatdi
qo'shib qo'ydi muallif AnthonyGalli.com, manba
Ma'lumotlarni konsolga kiritishingiz kerak. Faqat $ ("# duel_duelers_attributes_1_challenge_id") dan oldingi console.log (ma'lumotlar) ni qo'shing html (ma'lumotlar);
qo'shib qo'ydi muallif Medard, manba
Bu haqida uzr. HTMLga ajratilgan nuqta qo'yib, HTMLni ajratilganligini tekshirib chiqa olasizmi?
qo'shib qo'ydi muallif Medard, manba
Ajax javobidagi ma'lumotlar qiymatini ko'rsatasizmi?
qo'shib qo'ydi muallif Medard, manba
Men ruby bilan tanish emasman, nima uchun bu $ ('# ochilgan-no-2') qilyapsiz? Html ()? Nima uchun faqatgina <% = j qisman bajarasiz: "user_challenges"%> '?
qo'shib qo'ydi muallif Medard, manba
Yangilanishni ko'rmayapman, qaerga qo'ydingiz?
qo'shib qo'ydi muallif Medard, manba

Can you please try to remove name attribute & test once. Might be [](Square Brackets) are creating some problems.

Buni ko'ring

 

Yoki


3
qo'shib qo'ydi
Siz aytganidek qildim. Hech narsa o'zgartirmagan.
qo'shib qo'ydi muallif AnthonyGalli.com, manba
@ AnthonyGalli.com siz biron-bir xatoga yo'l qo'ysangiz konsolni tekshirib ko'rishingiz mumkinmi?
qo'shib qo'ydi muallif Harjeet Singh, manba

Men sizga HTML elementida bu kabi regex o'rniga o'tishni taklif qilaman.

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

var text=$('#duel_duelers_attributes_1_challenge_id').html();
text=text.replace(/(\\n|<(.)*>|\\"|\"\n.*\))/g,''); 
text=text.replace(/\$[^<]*/,''); 
text=text.replace(/(\n)/g,'').replace(/\\\"/g,'"').replace(/\"\)/,'').replace(/\\\//g,'/'); 
$('#duel_duelers_attributes_1_challenge_id').html(text);

console.log(text);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</div> </div>
2
qo'shib qo'ydi
Kechirasiz, bu mening skriptimga qanday qarashni nazarda tutadi? Buni takrorlay olmayman.
qo'shib qo'ydi muallif AnthonyGalli.com, manba
$. Get (address, function (data) {) ostida skriptga qo'ydim, uni $ ('# duel_duelers_attributes_1_user_id') da qo'ydim. {
qo'shib qo'ydi muallif AnthonyGalli.com, manba
Siz _user_challenges.html.erb ostida alohida skriptga qo'yishni taklif qilyapsizmi?
qo'shib qo'ydi muallif AnthonyGalli.com, manba
qo'shib qo'ydi muallif Sagar V, manba
bu erda faqat qayta qo'ng'iroq vazifasini bajaring va yuqoridagi kodni unga qo'ying. Kontent to'liq ko'rsatilganda qo'ng'iroq qiling
qo'shib qo'ydi muallif Sagar V, manba
ajax kodini baham ko'rasizmi?
qo'shib qo'ydi muallif Sagar V, manba
nop. uni bir xil faylga qo'yish kerak
qo'shib qo'ydi muallif Sagar V, manba

OK, shuning uchun ham kechikib ketishimga qaramay, boshimni o'rab qo'yishga harakat qildim. taxmin qil tanlash variantini boshqa birining o'zgaruvchan tinglovchilaridan almashtirishga harakat qilmoqdasiz. Buni amalga oshirish uchun juda oddiy vazifa, shuning uchun unga erishish bo'yicha qo'llanma kerak.

Biroq, jQuery hujjatlarini tekshirish sizga .html (...) funktsiyasi ba'zi elementlarning ichki qismidagi HTML b) sizning tanlovchingiz tomonidan belgilanadi. Siz bu JSFiddle ni tekshirishingiz mumkin va ular faqat faqat < ni tanlang.

challenge tanlash variantini o'zgartirishga harakat qilyapsizmi? ! Shunga qaramay, biz hali ham (bu sizning nazoratchi harakati) hukm qilish uchun zarur bo'lgan juda ko'p kod yo'q. Agar shunday bo'lsa, u holda tanlash ning ichki qismidagi ni almashtirishga urinayotganingizda qashshoq JavaScript brauzeridan qochib ketganingizda </<em> yana tanlash ni belgilaydi (yoki hech bo'lmaganda buni bajarishga harakat qiladi).

Har qanday qo'llanmalarni tekshirmasdan va maksimal moslashuvchanlikni saqlamasdan sizning taklifingizni faqat sizga JSON formatida taklif qilishni xohlagan variantlarni qaytarishingizni tavsiya qilaman. Bu sizga change tinglovchilaridagi variantlarni o'zgartirish imkonini beradi. Agar siz html ni taqdim qilishni talab qilsangiz, faqat options ni taqdim etishga va barcha kerakli qochishni uni < kodi .html (...) .

2
qo'shib qo'ydi
Fikr va javob uchun rahmat! O'ylashimcha, to'g'ri fikr yuritishingiz kerak. Javascriptni yaxshi bilmayman, shuning uchun skript kodamda SOda topilgan turli xil javoblarning xulosasi. Men juda hayajonli edim, chunki bu g'alati variantni ko'rganimga qadar men buni hal qildim deb o'yladim:/Bu savolni echishga yordam berishimga yordam bermasangiz, savolni tekshiruvchi kodi va qo'shimcha ma'lumot bilan yangiladim. Agar u hali ham chalkash bo'lsa, faqat menga xabar bering va men birgalikda gaplashishni xursand qilaman.]
qo'shib qo'ydi muallif AnthonyGalli.com, manba
Sizga juda yaqin bo'lgan go'zal "temiryo'lchi" usuli bu blog blogida . Shunga qaramasdan, ushbu yozuvdagi qisman faqat ni tanlash emas, balki variantlarni taqdim etishiga e'tibor bering.
qo'shib qo'ydi muallif Patru, manba
StackOverflow-da, siz istagan narsaga qanday erishish mumkinligini muhokama qiladigan bir nechta savol bor. Bu savolga javob JSON-ni ishlatadi, ammo variantlarni yaratish butunlay yozilmaydi. Bunga bu savol da bo'lgani kabi sof jQuery orqali erishish mumkin.
qo'shib qo'ydi muallif Patru, manba

Ok. According to API I think your collection_select is not totally correct: http://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/collection_select

Sinash:

<%= collection_select(:dueler, :challenge_id, Challenge.all, :id, :full_challenge %>

Birinchi "duatsiya" sizning tekshiruv operatsiyangizda mavjud bo'lsa, bu Challenge.all to'plamidan OR @ challengesdan ko'ra, ob'ekt/model dueti uchun usul yoki attributdan (challenge_id) nisbatan. : Id qiymati,: full_challenge - bu teg. Agar to'liq_challenge ushbu HTMLni mag'lubiyatga kiritmasa, u ko'rinmasligi kerak.

Umid qilamanki, bu yordam beradi, ehtimol bu to'g'ri javob emas, lekin sizga yordam berishga harakat qildim. Menga habar berarsiz,..

2
qo'shib qo'ydi
Hech qisi yo'q; tashvishga o'rin yo'q. Ha, bu ham ishlamadi.
qo'shib qo'ydi muallif AnthonyGalli.com, manba
Yaxshi fikr edi, lekin ishlamadi.
qo'shib qo'ydi muallif AnthonyGalli.com, manba
Ha, ijobiyman
qo'shib qo'ydi muallif AnthonyGalli.com, manba
HTML muammo davom etmoqda.
qo'shib qo'ydi muallif AnthonyGalli.com, manba
Xo'sh, sizni tasodifiy sharhlar bilan bezovta qilmoqchi emasman! ;-) Men uni boshqa birovga qoldiraman, chunki hozir men hal qilmayman.
qo'shib qo'ydi muallif KcUS_unico, manba
Escape_javascript-ni sinab ko'rdingizmi? , Masalan, html ("
qo'shib qo'ydi muallif KcUS_unico, manba
Men ushbu HTMlga nima sabab bo'lishiga ishonchim komil emas, lekin foydalanuvchi_challengeslarning renderidan boshqa narsa bo'lishi kerak ... Men qarashni davom ettiraman, ammo darhol javob berolmayman. Kechirasiz
qo'shib qo'ydi muallif KcUS_unico, manba
$ ("# dropdown-no-2") html ('<% = j render: qisman => "user_challenges", mahalliy aholi: {muammo: @challenges}%>:: formats => [: html]');
qo'shib qo'ydi muallif KcUS_unico, manba
formatni ushbu qatorga qo'shishga urinib ko'ring:
qo'shib qo'ydi muallif KcUS_unico, manba
Ma'lumotlar bazasi uchun kirish: full_challenge'da bu HTML yo'qligiga ishonchingiz komilmi?
qo'shib qo'ydi muallif KcUS_unico, manba

user_challenges.js.erb: $('#dropdown-no-2').html('<%= render partial: "user_challenges" %>')

yoki html teglaridan qochib yotgan "j" funksiyasini o'chirib tashlang.

2
qo'shib qo'ydi
Men faqat bu oson edi. Ishlamadingiz, lekin harakat uchun rahmat. Yangi foydalanuvchi tanlaganingizda, o'zgartirishingiz bilan collection_select yangilanmadi.
qo'shib qo'ydi muallif AnthonyGalli.com, manba
Javascript UZB
Javascript UZB
99 ishtirokchilar

@js_uzb @vuejs_uz @react_uz @nodejs_uz @angular_uz @ngTashkent @yiiframework_uz @laravel_uz @linux_uzbek @python_uz @swift_uzb —————— @uzdevgroup @UzGeeksGroup ——— @UzDev_Jobs @jobs_uzb