سؤال

أنا أواجه مشكلة مع أفعالي في القضبان...

عرض صفحة لمورد (كلب) الذي has_many (البراغيث). مدمج في الكلب show.html.haml هي دعوة ل render @dog.fleas الذي يجد (؟) تلقائيًا ويستخدم القالب في "البراغيث/_flea.html.haml" لإدراج كل براغيث مرتبطة بالكلب المذكور.

هذا يعرض بشكل صحيح. يا للعجب الآن ، بجانب كل براغيث ، وضعت رابط "Kill Freea" الذي يذهب إلى عنوان URL: //localhost:3000/dogs/1/fleas/7. الذي تم إنشاؤه بواسطة:

= link_to("Kill Flea", [ flea.dog, flea ], :method => :delete, :confirm => "Sure? A bunny will die")

ولكن في كل مرة يتم فيها النقر على هذا الرابط ، لا يوجد تأكيد ... ويجعل البراغيث show.html صفحة. يبدو الأمر كما لو أنه يستخدم احصل على على /dogs/1/fleas/7 بدلاً من حذف?!?

ملاحظة- لا تقلق بشأن العناكب والروبوتات التي تحذف الأشياء في قاعدة البيانات الخاصة بي ... أحاول فقط تعلم القضبان .. وفهم ما يحدث

هل كانت مفيدة؟

المحلول

يستخدم Rails 3 JavaScript غير مزعج الآن. في Rails 2.3 ، ستقوم Erb فقط بجمع كل هذا JavaScript الفوضوي مباشرة في الرابط نفسه ، في حدث onclick. الآن تم نقل JavaScript خارج الرابط ، وفي ملفات JS الخارجية. تأكد من أن لديك هذا في تخطيطك:

<%= javascript_include_tag :all %>

إذا كان لديك هذا ، فقد تكون هناك مشاكل أعمق لإبقاء JavaScript من الركض ، ولكن هذا هو المكان المناسب للبدء. اسمحوا لي أن أعرف كيف اتضح.

نصائح أخرى

مرحبًا ، يمكنك أيضًا تجربة هذا:

application.html.erb:

<%= javascript_include_tag 'jquery_ujs' %>

OR

<%= javascript_include_tag "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js", "jquery.rails.js" %>

افحص <%= javascript_include_tag %> في application.html.erb

ربما تفتقد إلى "التطبيق" JS

يجب أن تبدو على الأقل مثل

<%= javascript_include_tag "application" %>

أنا هنا لا أستخدم javaScript_include_tag: الكل ،: التطبيق وما إلى ذلك ، أنا أستخدم ملفات JS الخاصة بي ، مع اسم مخصص آخر: JavaScript_Include_tag: my_custom_file ولدي أيضًا هذه المشكلة. وأنا لا أستخدم "= طلب jQuery" في الملف ، لكن JavaScript/JQuery يعمل. أعتقد أن القضبان تتضمن jQuery افتراضيًا. ما فعلته هو أنني غيرت

link_to "Logout", destroy_user_session_path, :method => :delete 

إلى

 form_tag destroy_user_session_path, :method => :delete, :id => "logout_form" 
   link_to 'Logout', "#delete", :onclick =>  "$('#logout_form').submit();"

الآن يعمل بشكل جيد.

تحقق إذا كان التطبيق. html.erb

<%= javascript_include_tag :application %>

ليس كما:

<%= javascript_include_tag :default %>

يبدو أن طريقة link_to الخاصة بك ليست صحيحة تمامًا. حاول استخدام هذا الرمز بدلاً من ذلك:

  <%= link_to 'Kill Flea', [flea.dog, flea], :confirm => 'Sure?', :method => :delete %>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top