2010-08-21 41 views
23

Tôi bị kẹt trong một vấn đề đơn giản (rõ ràng). Trong event_controller của tôi, tôi có hành động i_like_it:Hiển thị một tệp Javascript khác nhau trong respond_to

def i_like_it 
    @event = Event.find(params[:id]) 

    ... # logic 

    respond_to do |format| 
     format.js 
    end 
    end 

Trong trường hợp của tôi "i_like_it" được gọi với: method => PUT (nó là một Ajax cuộc gọi, "i_like_it.js.erb" sẽ được trả lại như một kịch bản và nó wil được thực hiện trên trình duyệt.)

tôi muốn làm cho tập tin với một cái tên khác (không i_like_it.js.erb) một Javascript, nhưng tôi đã không tìm thấy bất kỳ tùy chọn trong Rails API tài liệu.

respond_to do |format| 
    format.js { render ??? } 
end 

Rails có thể làm cho vanilla JavaScript với: Tùy chọn js, nhưng Tôi không muốn sử dụng Javascript trong bộ điều khiển.

Bạn có đề xuất nào không?

Cảm ơn bạn, Alessandro DS

Trả lời

7

Hãy thử render :template => 'your_file_here' thay vì

Tài liệu cho render mô tả một vài lựa chọn khác nữa.

42

Nếu bạn làm:

respond_to do |format| 
    format.js { render :action => "different_action" } 
end 

nó sẽ được tải RAILS_ROOT/app/views/của bạn-điều khiển /different_action.js.erb để thay thế.

Khối format.js chỉ đảm bảo rằng nếu đó là yêu cầu .js, bạn có tiêu đề phù hợp được đặt theo mặc định và tìm kiếm .js.erb hoặc .js thay vì .html.erb theo mặc định.

Bạn cũng có thể sử dụng tệp render: để hiển thị bất kỳ tệp tùy ý nào trên hệ thống tệp xảy ra có JS trong đó hoặc bạn có thể sử dụng bất kỳ tùy chọn thông thường nào khác của kết xuất. There are a few of them.

+0

Trong trường hợp của tôi, tôi phải hiển thị tệp js của một bộ điều khiển khác, sau đó render: template => 'my_file' phù hợp hơn, cảm ơn bạn, Alessandro DS –

+0

Và nếu tôi muốn hiển thị my_javascript.js. erb của bộ điều khiển khác? – zer0uno

+0

làm thế nào để bạn gọi một tập tin từ một thư mục khác, như một thư mục chia sẻ không liên quan đến bộ điều khiển? đường dẫn tương đối bắt đầu từ đâu và bạn có thể đưa ra ví dụ về một đường dẫn (ví dụ: root/app/views/shared/vote.js.erb) không? – ahnbizcad

Các vấn đề liên quan