2012-07-09 37 views
5

Làm cách nào để hiển thị một phần mà không phải cung cấp "_" ở phía trước tên tệp? Có một tham số tôi có thể gọi để không sử dụng nó?Đường ray - Hiển thị một phần mà không phải sử dụng "_" ở phía trước tên tệp?

Sự cố này xuất hiện khi sử dụng RABL và Backbone - sử dụng RABL yêu cầu tôi có tệp trong chế độ xem của tôi như "index.json.rabl". Tuy nhiên, khi tôi sử dụng nhúng JSON ngay trên tải trang (như thường lệ với Backbone), tôi được yêu cầu gọi tệp "_index.json.rabl". Hai tập tin này là chính xác điều tương tự, chỉ cần có các tên khác nhau. Tôi đang tìm cách sử dụng chỉ 1 tệp, "index.json.rabl" và buộc hàm render() tìm kiếm tên tệp đó mà không có "_".

=> EDIT

Các giải pháp tiêu chuẩn mà mọi người đã mô tả bên dưới không hoạt động. Đó có thể là vấn đề RABL sau đó? Mã bên dưới luôn là chuyển đến tệp lượt xem/quốc gia/_index.json.rabl.

Trong file .erb tôi

countryList.reset(<%=get_json("countries", "index", @countries)%>); 

Trong file application_helper.rb tôi

def get_json(view_path, view_action, object) 
    path = view_path + '/' + view_action + ".json" 
    return raw(render(path, object: object, :formats => [:rabl])) 
end 

Trả lời

1

Từ RailsCast #322 on RABL:

<div id="articles" data-articles="<%= render(template: "articles/index.json.rabl") %>" > 

Bắt đầu từ đây, và sau đó tìm ra những gì sai rồi. Nhưng rõ ràng là render template: path là cú pháp bạn muốn.

+0

Mã bạn đã dán từ RailsCast không hoạt động. Theo nghĩa đen được dán vào trang của tôi, thay đổi "bài viết" thành "quốc gia", vẫn còn lỗi "Mẫu bị thiếu". – bluedevil2k

+0

Có lẽ là lúc bạn tạo một ứng dụng đường ray vanilla với một mẫu Rabl được thực hiện giống như Railscasts, và chúng ta hãy xem mã cho chính chúng ta. Hầu hết các câu trả lời ở đây đều cho bạn biết điều tương tự - có khả năng có điều gì đó trong ứng dụng của bạn đang gây ra sự cố. –

1

bạn đã thử render :template => "file_name"?

+0

vẫn mặc định để sử dụng "_" trong thư mục lượt xem/bố cục - ném lỗi nếu tệp đó không có ở đó – bluedevil2k

+0

không thể chính xác, hãy xem chương này về chức năng 'render': http: // guides.rubyonrails.org/layouts_and_rendering.html#using-render – keymone

0

Ok thử:

<%= render :file => 'views_directory/index' %> 

đâu views_directory là tên của thư mục của bạn trong quan điểm 8)

OLD:

Nếu nội dung là việc sử dụng giống nhau:

render :partial => "index" 

trong index.json.rabl và nội dung trong _index.json.rabl

+0

Tôi đang cố gắng tránh việc có 2 tệp bằng cách tạo hàm trợ giúp mà tôi có thể gọi để mã hóa xung quanh nhu cầu "_". Lấy ví dụ x 50 của tôi cho một ứng dụng lớn, nó sẽ dễ dàng hơn nhiều khi chỉ có một phương thức trợ giúp đơn giản. – bluedevil2k

+0

Xem câu trả lời từ @ChrisLedet –

+0

Không, điều đó cũng không hoạt động. Có vẻ như đó là một vấn đề cụ thể của RABL bây giờ. Tôi sẽ sửa đổi bài đăng của mình ở trên để bao gồm mã RABL. – bluedevil2k

2

Bạn có thể làm cho một tập tin bằng cách làm như sau:

render :file => "filename" 
Các vấn đề liên quan