আমি এখানে একটি নতুন ছোট টুকরা আনতে চাই:
সুতরাং ফলাফলটি পাওয়ার একটি সহজ উপায় খুঁজে পেয়েছি যা "অ্যানপ্রেন্টিস" চেয়েছিল।
প্রথমত, আপনি যদি ডিভাইস প্লাগ-ইনটির মধ্যে যে কোনও কিছু কাস্টমাইজ করতে চান তবে আমি আপনাকে "\ রুবি_প্রেরেটরি" লাইব \ রুবি \ রত্নগুলি \ 1.9.1 \ রত্নগুলি ise নকশা-সংস্করণ \ অ্যাপ্লিকেশন \ কন্ট্রোলারগুলি থেকে কোডটি অনুলিপি করতে পরামর্শ দিচ্ছি highly আপনার প্রকল্পে আপনি যে ফাইলটি চান তার জন্য | সহায়তাকারী | মেলার ... "।
[সম্পাদনা] অথবা আপনি নিজের ফাইলটিকে "নরমাল" ডিভাইস ফাইলগুলি থেকে উত্তরাধিকারী করে তুলতে পারেন ... যেমন ... বলুন ... আপনি আপনার ব্যবহারকারীদের কাস্টমের প্রথম লাইনের নকশা / নিবন্ধসমূহ_কন্ট্রোল.আরবি এর মধ্যে কেবল একটি ফাংশন ওভাররাইট করতে চান নিবন্ধগুলি নিয়ন্ত্রক হবেন:
class Users::RegistrationsController < Devise::RegistrationsController
[August ই আগস্ট ২০১৩ সম্পাদনা করুন] এখন ডিভাইস এমনকি কন্ট্রোলার উত্পন্ন করার জন্য একটি সরঞ্জাম সরবরাহ করে: https://github.com/plataformatec/devise/wiki/Tool:- জেনারেট- এবং- কাস্টমাইজ- নিয়ন্ত্রণকারী
যাইহোক ... যাইহোক ... আমি "অ্যানপ্রেন্টিস" কী লিখতে চেয়েছিল তা পেতে পেরেছি (ক্লিনার সমাধানের জন্য, নিম্নলিখিত বড় সম্পাদনাটি দেখুন):
#/my_project/app/helpers/devise_helper.rb
module DeviseHelper
def devise_error_messages!
return "" if resource.errors.empty?
return resource.errors
end
end
এবং, আমার মতে, পরবর্তী লাইনগুলি বেশ ভালভাবে কাজ করেছে:
<% devise_error_messages!.each do |key, value| %>
<div class="flash <%= key %>"><%= key %> <%= value %></div>
<% end %>
ঠিক আছে ... তারপরে আপনি এই জাতীয় নির্দিষ্ট বৈশিষ্ট্যের জন্য ত্রুটিগুলি অ্যাক্সেস করতে পারেন:
#Imagine you want only the first error to show up for the login attribute:
<%= devise_error_messages![:login].first %>
এবং ... কেবলমাত্র একটি ত্রুটি থাকার জন্য একটি ছোট কৌশল (প্রথমে ধরা পড়ার জন্য) প্রতি বৈশিষ্ট্যটি দেখানো:
<% if resource.errors.any? %>
<% saved_key = "" %>
<% devise_error_messages!.each do |key, value| %>
<% if key != saved_key %>
<div class="flash <%= key %>"><%= key %> <%= value %></div>
<% end %>
<% saved_key = key %>
<% end %>
<% end %>
আমি জানি যে এই প্রশ্নটি পোস্ট হওয়ার পরে একটি সময় হয়েছে, তবে আমি মনে করি এটি ব্যবহারকারীর অনেকগুলি ধারণা তৈরি করবে :)।
বড় সম্পাদনা:
যেহেতু আমি আমার কোডটি প্রসারিত করে, এটি আরও পরিষ্কার করে এবং অন্যদের সাথে ভাগ করে নিতে ভালোবাসি, আমি সম্প্রতি ডিভাইস_রর_মেসেজগুলি পরিবর্তন করতে চেয়েছি! এটি আমার দৃষ্টিতে এটি ব্যবহার করার জন্য এবং এটি উপরে বর্ণিত কৌশলটি প্রদর্শন করতে।
সুতরাং, এখানে আমার পদ্ধতি:
def devise_error_messages!
html = ""
return html if resource.errors.empty?
errors_number = 0
html << "<ul class=\"#{resource_name}_errors_list\">"
saved_key = ""
resource.errors.each do |key, value|
if key != saved_key
html << "<li class=\"#{key} error\"> This #{key} #{value} </li>"
errors_number += 1
end
saved_key = key
end
unsolved_errors = pluralize(errors_number, "unsolved error")
html = "<h2 class=\"#{resource_name}_errors_title\"> You have #{unsolved_errors} </h2>" + html
html << "</ul>"
return html.html_safe
end
এখানে কোনও বড় কথা নয়, আমি কেবলমাত্র একটি ত্রুটি পিয়ার বৈশিষ্ট্য দেখানোর জন্য আমার দৃষ্টিতে যে কোডটি লিখেছিলাম তা পুনরায় ব্যবহার করেছি, কারণ প্রায়শই প্রথমটির একমাত্র প্রাসঙ্গিক হয় (যেমন যখন ব্যবহারকারী কোনও প্রয়োজনীয় ক্ষেত্রটি ভুলে যায়)।
আমি সেই "অনন্য" ত্রুটিগুলি গণনা করছি এবং আমি বহুবচন ব্যবহার করে এইচ 2 এইচটিএমএল শিরোনাম তৈরি করছি এবং ত্রুটি তালিকার আগে এটি রাখছি।
এখন, আমি "ডিভাইস_অরর_মেসেজগুলি" ব্যবহার করতে পারি! ডিফল্ট হিসাবে এবং এটি হুবহু রেন্ডার করে যা আমি ইতিমধ্যে রেন্ডার করেছিলাম।
আপনি যদি নিজের দৃষ্টিতে একটি নির্দিষ্ট ত্রুটি বার্তা অ্যাক্সেস করতে চান তবে আমি এখন সরাসরি "রিসোর্স.অরফারেন্স [: বৈশিষ্ট্য] .প্রথম" বা যে কোনও কিছু ব্যবহার করার পরামর্শ দিচ্ছি।
সেয়া, কুলগার।