2012-11-05 53 views
6

Có ai vui lòng làm sáng tỏ một số cách để định tuyến các tệp .html.erb của thư mục con của bạn không ?? mà được đặt như thế này:cách định tuyến thư mục con của bạn theo quan điểm Ruby on Rails?

view/pages/en/index.html.erb 

và tuyến đường này tôi đang làm những điều sau đây trên route.rb

match ':lang/index', :to => 'pages/en#index' 

và cho một mã liên kết, tôi có điều này vào tiêu đề

<%= link_to "Home", index_path %> 

Lỗi tôi đang nhận là

Routing Error 
uninitialized constant Pages 

tuyến:

enter image description here

+1

nơi bạn nhận được lỗi đó? đăng backtrace – HungryCoder

+0

Vui lòng không chỉnh sửa câu trả lời cho câu hỏi. Đăng cùng một nội dung dưới dạng câu trả lời bên dưới và đánh dấu nội dung được chấp nhận. – meagar

Trả lời

1

AFAIK, Không có cách nào để định tuyến đến chế độ xem. Bạn có thể định tuyến một URL đến hành động của bộ điều khiển. Hành động đó có trách nhiệm hiển thị các chế độ xem.

bạn có thể sử dụng định tuyến không gian tên để đặt tài nguyên trong thư mục con.

...

Điều tôi muốn viết đã được viết bởi @TuteC. Chỉ cần làm theo liên kết đó và có bạn có thể nhận được ngôn ngữ cụ thể điều ra khỏi hộp như ông giải thích.

3

Namespaces sẽ tổ chức mã và quan điểm của bạn trong thư mục con: http://guides.rubyonrails.org/routing.html#controller-namespaces-and-routing

Nếu chỉ cần chỉ thư mục views/pages tổ chức theo cách đó, bạn có thể làm trong PagesController cái gì đó như:

render "#{I18n.locale}/#{action_name}" 

Câu hỏi: tại sao bạn muốn view/pages/en/index.html.erb thay vì view/pages/index.en.html.erb? Điều đó sẽ làm việc ra khỏi hộp.

+0

đơn giản là vì tôi sẽ có một thư mục khác như 'es', nơi nó sẽ có tệp .html.erb với bản dịch có liên quan. Tôi có thể sử dụng API quốc tế hóa, nhưng đây là cách nó phải được thực hiện theo đặc điểm kỹ thuật! – TheMouseMan

+0

Chỉ cần thêm một cách nhanh hơn để tổ chức các chế độ xem theo cách đó. – TuteC

+0

một lần nữa, tôi không bắt buộc phải sử dụng API dịch, tại thời điểm nó chỉ là định tuyến tĩnh cho các thư mục như 'en' (cho tiếng Anh), 'es' (tiếng Tây Ban Nha), 'de' (tiếng Đức) bên trong view-> pages-> 'en' 'es' 'de' etc – TheMouseMan

2

CẬP NHẬT Đây là cách nó hoạt động cho route.rb: - ​​

match ':lang/index', :to => 'pages#index' 

Render nó trên bộ điều khiển của bạn: -

def index 
    render "pages/en/index" 
end 

def about 
    render "pages/#{params[:lang]}/about" 
end