سؤال

النظر في خيارات مختلفة:

واحد هو فقط وضع الصفحات الثابتة في المجلد العام / المجلد، لكنني أريد أن تكون الرأس من التصميم / التطبيق متسقة.

حاولت هذا، لكنني حصلت على خطأ:

# in routes.rb:
map.connect '*path', :controller => 'content', :action => 'show'

# in content_controller.rb:
def show
  render :action => params[:path].join('/')
end

كل ما أريده هو وسيلة سهلة لوضع أشياء مثل الأسئلة الشائعة والاتصال والاتصالات والخصوصية وغيرها من صفحات نوع غير التطبيق في مكان ما من خلال مجرد إنشاء .RHTML فقط. من فعل هذا؟

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

المحلول

يحتوي FeenBot على مكون إضافي يسمى High_Voltage لعرض المحتوى الثابت: https://github.com/thoutebot/high_voltage.

نصائح أخرى

بالنسبة القضبان 5. و القضبان 4. يمكنك القيام بما يلي:

ضع الخط أدناه في نهاية Routes.rb

  get ':action' => 'static#:action'

ثم يطلب إلى الجذر / مرحبا, ، سوف تجعل /app/views/static/welcome.html.erb..

لا تنس إنشاء وحدة تحكم "ثابتة"، على الرغم من أنك لا تضطر إلى وضع أي شيء هناك.

بالنسبة القضبان 3. يجب عليك استخدام "المباراة" بدلا من "الحصول"

  match ':action' => 'static#:action'

يعتمد على بنية URL، إذا كنت ترغب في الخروج من المسارات من / (على سبيل المثال / about_us)، ثم:

map.connect ':action', :controller => "static"

يجب أن يذهب هذا في نهاية ملفات الطرق الخاصة بك، ورمي ملفات .html.erb الخاص بك في التطبيق / المشاهدات / الثابتة وأنت انتهيت.

على سبيل المثال: رمي في about_us.html.erb, ، سوف أعطيك صفحة في / حوالي_us.

العنصر الذي لديك في سؤالك رائعا لالتقاط كل الطريق حيث يمكنك تحليل الصفيف المعطى لك في params[:path]. وبعد معلومات أكثر قليلا عن ذلك في http://railscasts.com/episodes/46-catch-all-Route.

تقديم عمل لا معنى له. سترغب في تقديم قالب (أو ملف) مع تخطيط.

# Path relative to app/views with controller's layout
render :template => params[:path]

# ... OR

# Absolute path. You need to be explicit about rendering with a layout
render :file => params[:path], :layout => true

يمكنك تقديم مجموعة متنوعة من القوالب المختلفة من عمل واحد مع التخزين المؤقت للصفحة.

# app/controllers/static_controller.rb
class StaticController < ApplicationController
  layout 'static'

  caches_page :show

  def show
    valid = %w(static1 static2 static3)
    if valid.include?(params[:path])
      render :template => File.join('static', params[:path])
    else
      render :file   => File.join(Rails.root, 'public', '404.html'), 
             :status => 404
    end
  end
end

أخيرا، سنحتاج إلى تحديد طريق.

# config/routes.rb
map.connect 'static/:path', :controller => 'static', :action => 'show'

حاول الوصول إلى هذه الصفحات الثابتة. إذا لم يتضمن المسار قباذا صالحا، فسوف نقدم ملف 404 وإرجاع حالة 404.

  • http://localhost:3000/static/static1
  • http://localhost:3000/static/static3
  • http://localhost:3000/static/static2

إذا أخذت نظرة في التطبيق / عام، فسوف تلاحظ ثابتا / دليلا مع Static1.html، Static2.html و Static3.html. بعد الوصول إلى الصفحة لأول مرة، ستكون أي طلبات لاحقة ثابتة تماما بفضل التخزين المؤقت للصفحة.

النظر في ما إذا كان لديك 1 وحدة تحكم منزلية مع طريقة الزوجين مثل إظهار، Aboutus، الخصوصية:

class HomesController < ApplicationController
  def show
  end
  def privacy
  end
  def aboutus
  end
end

وقم بتعيين طريقة العرض إلى الجذر الخاص بك، وتعيين آخر لبعض الطرق المسماة مثل

map.root      :controller => "homes", :action => "show"
map.aboutus "/aboutus", :controller => "homes", :action => "aboutus"
map.privacy "/privacy", :controller => "homes", :action => "privacy"

ومع عرض لكل

app/views/homes/aboutus.html.erb --> you get http://localhost:3000/aboutus
app/views/homes/show.html.erb --> you get http://localhost:3000 (root)
app/views/homes/privacy.html.erb --> you get http://localhost:3000/privacy

كل ذلك باستخدام نفس التصميم في التطبيق / المشاهدات / تخطيط / Application.html.erb

ليندسار الحل هو واحد من أفضل ما رأيته في حياتي. قام ببناء صفحات ثابتة التخزين المؤقتة التي انتهت عندما تغير مراجعة GIT.

<%= cache "site-page-#{@page_name}-#{App.git_revision}" do %>
  <%= render :partial => @page_name %>
<% end %>

إنشاء pagescontroller لصفحاتك الثابتة (مثل الاتصال) وإدراج

def contact_page
end

في التكوين / Routes.rb إدراج

get 'contact' => 'pages#contact_page'

والتي ستعرض المحتوى من وجهات النظر / الصفحات / contact_page.html.erb

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