سؤال

وأواجه مشكلة صغيرة ... أنا الإعداد تطبيق القضبان التي هي لخدمة موقع على شبكة الانترنت الألمانية. للاستفادة من الميزات تعددية الداخلية القضبان "، وظللت كل ما عندي من نماذج باللغة الإنجليزية (على سبيل المثال" JobDescription "النموذج). الآن، إذا أسميه "http://mysite.com/job_descriptions/"، وأحصل على كل ما عندي من job_descriptions .... حتى الان جيدة جدا. لأنني لم أرد على المدى الانجليزية "job_descriptions" في بلدي رابط، أضع التالية في بلدي routes.rb

map.german_term '/german_term', :controller => 'job_descriptions', :action => 'index'
map.german_term '/german_term/:id', :controller => 'job_descriptions', :action => 'show'

إذا أسميه "http://mysite.com/german_term/" أو "http://mysite.com/german_term/283" أحصل على كل ما عندي من job_descriptions، التي على ما يرام.

ولكن، لجعل URL أكثر دية كبار المسئولين الاقتصاديين، وأود أن تبادل هوية لسبيكة أكثر سهل الاستعمال في URL. وهكذا، أضع التالية في بلدي job_description.rb:

def to_param
"#{id}-#{name.gsub(/[^a-z0-9]+/i, '-')}"
end

والتي، كلما يمكنني استخدام "job_description_path" في أي طريقة link_to، يجعل عناوين المواقع بلدي إلى شيء من هذا القبيل "<لأ href =" HTTP: // مع mysite / job_descriptions / 13-لي-العمل-وصف-عنوان "يختلط =" نوفولو noreferrer "> HTTP: // مع mysite / job_descriptions / 13-لي-العمل-وصف-لقب ".

ولكن، وهذا هو المكان الذي أنا عالقة، كنت ترغب في الحصول على "http://mysite/german_term/13-my-job-description-title". حاولت بالفعل لتبادل "job_description_path" مع "german_term_path" في رمز LINK_TO، ولكن الذي يولد فقط "http://mysite/german_term/13". من الواضح، لا يسمى to_param. الحل واحد وجدت هو بناء صلة مع:

<%= link_to job_description.name, german_term_path(job_description.to_param) %>

ولكن هذا أمر يبعث على الملل وليس لتغيير كافة المكالمات link_to في قانون بلدي. ما أريده هو أن يحل محل "job_description" ب "german_term" كلما يحدث في URL.

وأي أفكار؟!؟

والتحيات،

وسيباستيان

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

المحلول

وأعتقد أنك سوف تحتاج إلى استخدام المساعدين الطريق مريحة للحصول على ما تريد.

في هذه الحالة، لن تأخذ الكثير من إعادة العوملة (على افتراض انك قد معين JobDescriptions كمورد). ترك to_param الخاص بك كما هو وتغيير JobDescriptions طريقك إلى شيء كما يلي:

map.resources :job_descriptions, :as => 'german_term'

وآمل أن يساعد هذا!

نصائح أخرى

والقضبان يستخدم فقط

def to_params 
end

وURL باني عندما كنت تستخدم راحة المساعد الطريق / الارتباط. الطريقة الوحيدة وأنا على علم هو أن تفعل ذلك على غرار كيف فعلت، إلا إذا كنت على استعداد لمجرد الغاء الروابط اللغة الانجليزية وتفعل كل شيء في الألمانية. في هذه الحالة، مجرد الحصول على التخلص من خطوط الطريق اسمه وتغيير to_params استخدام حقل الاسم الصحيح من قاعدة البيانات. عند هذه النقطة، يجب أن الطرق REST تتصرف بشكل صحيح.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top