مشکل در نوع متد

سلام دوستان
من به تازگی شروع به برنامه نویسی با روبی و فریمورک ریلز کردم
نکته جالب اینه که تا اینجا که چند روزی میشه با ریلز سر و کله میزنم خطاها و مشکلات خیلی زیاد تری نسبت به بقیه زبان هایی که کار کردم خوردم
اما همه اش حل شده خوشبختانه جز آخری
برای همین گفتم کسی تجربه مشابه داره لطفا من رو راهنمایی کنه
با استفاده از جم فایل devise موارد ساخت حساب کاربری و سشن و … رو برقرار کردم
اما مشکلی که دارم اینه که برای خروج و پاک کردن سشن کد زیر رو استفاده کردم:
<%= link_to “Sign_out”,destroy_user_session_path, method: :delete=%>
و در صفحه html همچین چیزی ظاهر میشه:
el=“nofollow” data-method=“delete” href="/users/sign_out">Sign_out<
وقتی کلیک میشه به صورت get فراخوانی میشه و متد delete نیست …
اروری که میده: No route matches [GET] "/users/sign_out"
جاوا اسکریپت هم فعال و موجوده
نکته اینجاست که نمیخوام متد get استفاده کنم و حتما اصرار دارم همین متد delete استفاده شه برای همین کانفیگ devise رو نمیخوام دست بزنم
کل نت رو زیر و رو کردم چیزی پیدا نشد
در ضمن نسخه آخر و بر روی ویندوز نصب میباشد
ممنونم

لطفا application.js رو بده ببینم

@freez اول کد زیر رو از application.js حذف کن.

//= require turbolinks

و کد route.rb و application.js رو ی توی دوتا gist کپی کن و لینک gist ها رو بده که بررسی بشه.
(Filename including extension) باید بشه route.rb , و بعدش روی Create secret gist کلیک کن. نیازی هم به ورود یا ثبت نام نیست.

نیازی به حذف Turbolinks نیست

1 پسندیده

سلام

// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// compiled file.
//
// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
// about supported directives.
//
//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require turbolinks
//= require_tree .

البته با اضافه کردن کد زیر تو routes مشکل حل میشه، اما بازم میشه get
devise_scope :user do
get ‘/users/sign_out’ => 'devise/sessions#destroy’
end

@freez شما داری از متد get استفاده می کنی. لطفا با delete عوض کن مثل gist زیر و نتیجه رو بگو که اگر درست نشد بیشتر روش کار کنیم.
https://gist.github.com/toomaj/70e40e55f40ff5bbc7a8#file-rb-L2

حتما لینک زیر رو با دقت مطالعه کن. هر جاش نا مفهوم بود بپرس
http://guides.rubyonrails.org/routing.html

نکته جالب اینه که این سایت خیلی خوب از github پشتیبانی می کنه :smiley:

سلام
عرض کردم اگر get کنم درست میشه اما میخوام با همون delete انجام بشه
خیر با تعویض کد درست نشد و ارور زیر پا برجاست:
No route matches [GET] “/users/sign_out”

بسیاری از منابع همین کد رو کافی دونستن برای همین عجیبه برام
ممون که وقت میزارید

@freez قبلش devise_for و resources رو درست تعریف کردین؟ اگر route رو کامل ببینم بهتر میتونم کمک کنم

این مشکل به jquery-rails و jquery_ujs بر می گرده. کنسول جاواسکریپ رو چک کن و مطمئن شو این دوتا لود شده باشن

1 پسندیده

@freez می تونه jquery-rails و jquery_ujs هم باشه
ببین کد زیرو از application.html.erb یا اگر از slim استفاده می کنی از application.slim.erb پاک نکردی.

<%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>

منم قبلا همین مشکل رو داشتم
بعد از کلی جستجو مشکلم حل شد. که همین راه حل شما بود.