ساخت ساختار سفارشی برای لینک

با درود خدمت دوستان من کلا یک مشکلی در شروع کارم دارم این هست

من الان می تونم مطالبمو نمایش بدم و ویرایش بکنم یا اضافه بکنم ولی مشکل اصلی من در ساختار لینک هست نمی تونم تغییرشون بدم به عنوان مثال وقتی در صفحه اصلی اومدم یک مطالبی رو زدم

     def show
  	@page = Page.where(:permalink => params[:permalink], :visible => true).first
  	if @page.nil?
  		redirect_to(:action => 'index')
  		
  	else
  		# display the page content using show.html.erb
  	end
  end

به این صورت الان مطالب من به این صورت زیر هست

http://localhost:3000/show/sss

ولی من دوست دارم به این پارامتر اضافه کنم و ویرایشش بکنم به عنوان مثال به صورت زیر

http://localhost:3000/show/name-permalink/id112233

یا

http://localhost:3000/show/ctegory/id1122/name-permalink

یا

http://localhost:3000/ctegory/id1122/name-permalink

دوستان در این زمینه راهنمایی می کنند اگر پروژه کوچیکی درست کرده اند که بدرد یک اماتور می خوره که اونم بزارند عالی می شه

مشکل دوم من این هست که یکی از لینک های بالا

مثلا

http://localhost:3000/show/id1122/name-permalink

می خوام چه لینک بالا رو زدم چه لینک زیر

http://localhost:3000/show/id1122

هر دو به همون صفحه مطالب برند کمی در درک این بخش مشکل دارم خیلی تست کردم همشون کار نمی کنه

با تشکر

اگر بتونی پروژت رو روی گیت‌هاب بزاری تا بچه‌ها کمک کنن خیلی بهتر خواهد بود.
اما کاری که باید بکنی تغریف یه متغیر روی rout هات هست.
برای مثال

get 'show/:action(/:param)

این لینک رو مطالعه کن

1 پسندیده

درود خدمت شما من یک چیزایی امروز انجام دادم به شرح زیر مثلا

  get 'subject/page/:id', :to => 'subjects#show'

الان لینکم یک تغییر کوچیکی کرده و الان شرح لینک شده

http://localhost:3000/subject/page/1

کد شما رو هم اینجوری تست کردم

get 'show/:action(/:param)', :to => 'subjects#show'

بعد لینک هام از show/1 تغییر کرد به show/show?id=1

من تو اکشن show

def show
@subject = Subject.find(params[:id])

end

هست که کد شما کار نیز کرد فقط سوالی که هست بد به کار بردن کدی که لطف کردید دادید یک علامت ؟ می آید روند حذف اون به چه صورتی هست

و سوالی هست این هست که فکر کنم مشکلم تا موارد زیادیش حل می شه این کد زیر هست

به صورت مثال توجه کنید

  @subject = Subject.find(params[:created_at])

این دستور اگر بجای created_at بیام id بزارم حل می شه مشکلی نداره لینک تغییر می ده و یا نمی تونم دوتا پارامترز بگیرم مثلا آیدی و تاریخ ساخت یا حتی name اون صفحه لینک دارای ارور می شه اینجا راهنمایی می فرمایید؟

با تشکر از شما

تو گیت هاپ گزاشتم اولین بارم بودم امید وارم نمایش داده بشه
https://github.com/shahryarjb/simple_cms_test

نکته اول اینکه در کنترلی که تو پست اول دادی یه سری مشکل کلی داری مثلا نوع query زدنت خوب نیست سعی کن از scope استفاده کنی. و یا اینکه از دستور زبان قدیمی hash ها استفاده کردی که بهتره از جدیدش استفاده کنی و غیره.

اما اگه حقیقتش رو بخوای من هنوز منظور و هدفتو دقیق نگرفتم که چکار می خوای بکنی.

1 پسندیده

درود خدمت شما تشکر می کنم از شما و دوستان دیگه که واقعا وقت می زارند و پاسخ می دید

ولاه من می خوام یک پروژه ای رو شروع کنم داخلش یاد بگیرم و همینطور کد بزنم البته اینی که اپلود کردم چیزی هست که روش تست می کنم و یاد می گیرم

این پروژه از یک کتابخانه مجازی شروع می شه و کلاس آنلاین در کل به یک دانشگاه مجازی می رسه . چند سالی که با جوملا کار می کنم امکانات خوبی در لینک و میدیریت های لینک داره

به عنوان مثال من شاید مطالبی رو در کتاب خانه بزارم و بخواهیم اون هارو در سایت یعنی صفحه اصلی سایت نمایش بدم به همین منظور می خوام که لینک ها همه کلیک می شند
lib/category/id

و شاید تو همون صفحه اصلی من مطالب وبلاگ خودمو هم نشون بدم بخش مطالبی که در سایت ارسال می شه به شرح زیر بشه

blog/category/id/permalink

با اینکار که به مرور زمان پروژه بزرگ می شه من دقیقا می دونم لینک ها به چه صورت هست و برای اون لینک ها می یام منو می سازم و بعد از اون دسترسی می دم به خود کاربر داخل سیستم خودش برای هر منویی که می سازه (permalink ) بسازه که تو لینک بیاد یا خودش دسترسی به تغییر لینک داشته باشه

ممنون از پیشنهادی که کردید ولاه من خودم از یک فیلم آموزشی رفتم جلو و مثل نفری که داشت آموزش می داد نوشتم بیشتراشو

به عنوان مثال یک سری scope زد

scope :visible, lambda { where(:visible => true) }
	scope :invisible, lambda { where(:visible => false) }
	scope :sorted, lambda { order("subjects.position ASC") }
	scope :newest_first, 

ولی نمی دونم چرا فقط برای درست کردن یک سری متد مثل سرچ استفاده کرد و نیومد برای ساخت query ازش استفاده کنه

فقط مورد hash های قدیمی نفهمیدم من یک سرچی زدم داخل گوگل

لینک زیر آورد :

http://api.rubyonrails.org/classes/Hash.html

و کد زیر

{ name: 'Rob', years: '28' }.assert_valid_keys(:name, :age) # => raises "ArgumentError: Unknown key: :years. Valid keys are: :name, :age"
{ name: 'Rob', age: '28' }.assert_valid_keys('name', 'age') # => raises "ArgumentError: Unknown key: :name. Valid keys are: 'name', 'age'"
{ name: 'Rob', age: '28' }.assert_valid_keys(:name, :age)   # => passes, raises nothing

من هم دقیقا مثل این می یام :name می نویسم ولی دقیقا متوجه نشدم شما کجا رو می فرمایید

در اصل می خوام ببنیم چطور می تونم هر پارامتر یا هر چند پارامتر با هم تو لینک پس بدم و قرار بدم تا بتونم دسته بندی مناسب و همیمطور بعد ازشون ریدایرکت استفاده کنم
با تشکر

دوستان منتظر نظرات خوبتون هستم

بنظر می رسه که شما هنوز دید مناسبی از Route ها ندارین. بهتون پیشنهاد می کنم این راهنما رو مطالعه کنید:

http://guides.rubyonrails.org/routing.html

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

درود در مورد هش و همینطور نوع کو آری گرفتن مشکلاتی رو فرمودید که اگر وقت کردید یک توضیح کوچیکی در موردشون بدهید ممنون می شوم

و در مورد لینک ها من چندین بار لینک مورد نظر مطالعه کردم چیزی که بیشتر نظرم اینکه بتونیم هر پارامتری از جمله پرمالینک یا آیدی یا حتی نام یک مطالب یا آیدی یوزری که این مطالب ارسال کرده روی روی url بیارم که متسفانه نتونستم الان می تونم آدرس تغییر بدم ولی پارامتر هایی که می خوام نمی تونم تو لینک بیارم

برای این مورد لطفا این دو راهنما رو مطالعه کنید:

و در مورد لینک ها من چندین بار لینک مورد نظر مطالعه کردم چیزی که بیشتر نظرم اینکه بتونیم هر پارامتری از جمله پرمالینک یا آیدی یا حتی نام یک مطالب یا آیدی یوزری که این مطالب ارسال کرده روی روی url بیارم که متسفانه نتونستم الان می تونم آدرس تغییر بدم ولی پارامتر هایی که می خوام نمی تونم تو لینک بیارم

بهتره که یک پروژه تو گیت هاب بسازین و هر چی می دونی توش بسازی بعد مورد به مورد با هم همونجا چک کنیم و پیش بریم.

درود خدمت شما پروژه بالا لینک داده شده من در پوشه routs تغییراتی که زدم همین الان هست
تغریبا از خط ۴ تا ۹ برخی تغییرات دادم یا کار نکرد یا اینکه چیزی که می خواستم نشد که کامنت کردم

بازم ممنون که وقت می زارید

@lxsameer

دیدم سورس رو. آلان فقط یکی یکی واضح بفرما که می خوای به چکار کنی که دونه دونه بریم جلو

1 پسندیده

درود خدمت شما یک مثال می زنم که کامل متوجه منظور بنده بشوید

فکر کنید ما دو مجموعه داریم برای هر مطالبمون

۱. ورزشی
۲. علمی

هر دو مجموعه دارای محتوا های زیادی هستند که در صفحه اصلی می آید حالا آدرس ها به صورت زیر می شود

ورزشی

name.com/sport/001/sport-in-the.html

و مطالب علمی

name.com/Science/021/Science-in-the.html

اگر توجه کرده باشید هر دو مطالب بالا در صفحه اصلی سایت مثلا نمایش داده می شود ولی لینک های خاص به خودشون دارند

تشریح دو لینک بالا که من نیاز به این دارم چنین امکاناتی یا چنین مواردی رو روی دامنه پس کنم ( قرار بدم )

sport و Science از جدول نام بانک اطلاعاتی گرفته شده ( مثلا جدول category فیلد name )
001 و 021 آیدی هر مطالب هست
sport-in-the و Science-in-the پرمالینک هر مطالب هست

امید وارم متوجه شده باشید که من می خوام لینک های سفارشی با هر پارامتری که در دیتابیس هست رو اگر نیاز دارم در url بیارم با اون آموزش و بخش کمک ریلز می تونم تغییری در لینک بدم ولی پارامتر های مربوطه می خوام نمی تونم بیارم :innocent:

@lxsameer

دوستان منتظر لطفتون هستیم نسبت به این تایپیک
@lxsameer

چرا نیاز به ID دارین ؟
شما می تونین یک فیلد به اسم slug بسازین بد با توجه به اون هر Page که می خواین رو لود کنین

1 پسندیده

درود من متوجه صحبت شما نشدم اگر نمونه کدی هست در این رابطه اشاره بکنید ممنون می شم

جناب @lxsameer مشکل این نیست چه پارامتری از دیتابیس در لینک باشه یا نه !! مشکل من درک نکردن و محدودیت داشتن در ساخت لینک های سفارشی هست

به صورت مثال من نمی تونم همزمان اسم یک دیتابیس به نام مجموعه به همراه آیدی مطالب و پرمالینک یک مطالب رو بیارم روی url و در آینده هرچیز دیگه
مشکل اساسی من این هست یعنی در منطق و انجام کار مشکل وجود داره

دوستان ما همچنان منتظر راهنمایی شما هستیم دوستان از بس این چند مدت مشکلات رو حل کردم مغزم درد می کنه :d ولی این مشکل لینک های سفارشی رو نتونستم ردیف کنم ممنون می شم بهم در این زمینه کمک کنید

من هنوز منظور از سفارشی رو متوجه نمی شم . شما با هر فیلدی می تونید دیتا رو از دیتا بیس بگیرید.

خیلی ساده هست نمی دونم چطور توضیح بدم

من نمی تونم هر اسمی از دیتابیس دوست دارم روی بیارم توی url همین

به صورت مثال

http://www.namesite.com/sport/1129/sport-in-iran.html

sport اسم مجموعه از دیتابیس
1129 آیدی مطلب
sport-in-iran پرمالینک هر مطالب

همین !! این مورد خیلی ساده رو من نمی تونم تو لینک بیارم

خوب به این صورت می تونی:

get '/:category_name/:post_id/:post_permalink' , to: 'posts#show'

و تو کنترلر به این کلید ها تو params دسترسی داری که می تونی با هاش اون post که می خوای رو از دیتا بیس بگیری.

اما بازم می گم این کار منطقی نیست. بین ID و Permalink یکی رو انتخاب کن.

ممنونم به زودی تست می کنم
بیشتر برای سئو می خوام این کارو انجام بدم