2010-04-27 30 views
29

Vấn đềnguồn Nested trong namespace form_for

Các helper form_for sai xác định đường dẫn đến tài nguyên lồng nhau của tôi bên trong một không gian tên. Các mô hình được đề cập là: Diễn đàn :: Chủ đềDiễn đàn :: Trả lời tương ứng, nằm trong thư mục con được gọi là "diễn đàn" trong thư mục mô hình của tôi. Đây là trong Rails 3 BETA 3.

routes.rb

namespace :forum do 
    root :to => 'threads#index' 
    resources :threads do 
     resources :replies 
    end 
    end 

app/views/forum/trả lời/_form.html.haml

... 
    - form_for [@thread, @reply] do |f| 
... 

app/controllers /forum/replies_controller.rb

... 
    def new 
    @reply = Forum::Reply.new 
    end 
... 

Lỗi

undefined method `forum_thread_forum_replies_path' 

Trong tham chiếu đến dòng nêu trên trong _form.html.haml

Trả lời

45

ngồi biên tập giải pháp trong trường hợp mọi người không đọc các phản ứng:

<%= form_for [:admin, @person, @image] do |f| %> 

Phản hồi cũ:

Tôi có một dự án với một không gian tên admin và nhân dân và hình ảnh nguồn lực, đây là cách tôi xây dựng form_for tôi trong rails3, tôi đã không tìm ra cách chỉ được nêu ra để làm điều đó sạch ...

<%= form_for [@person, @image], :url => admin_person_images_path do |f| %> 
+0

tác phẩm này với cả thêm và chỉnh sửa Will? – nlaq

+0

Chắc chắn, bạn sẽ chỉ cần thay đổi url thành đường dẫn cập nhật. – Bitterzoet

+0

Việc nào yêu cầu tôi chuyển url vào biểu mẫu của tôi một phần ... Không phải là một vấn đề lớn, nhưng có vẻ như bạn không cần phải làm điều đó. – nlaq

2

@Douglas: Nó không làm việc cho tôi. Theo quan điểm của tôi, tên trong các tuyến đường nên được đa dạng hóa. Khi tôi làm như khuyến cáo, lỗi này là:

undefined method `admin_admin_person_admin_image_path' for #<#<Class:0x55976d0>:0x55a9bc8> 

Giải pháp của tôi mà làm việc cho New:

form_for @image, url: admin_person_images_path(@person, @image) 

Giải pháp của tôi mà làm việc cho Edit:

form_for @image, url: admin_person_image_path(@person, @image) 

Ist có bất kỳ giải pháp cho kết hợp điều này trong một hình thức?

Chỉnh sửa (Giải pháp cho một tuyến đường mới namespaced lồng nhau trong một hình thức):
Bây giờ tôi đã logic sau trong routes.rb

resources :mobile_users do 
namespace :candystore do 
    resource :transactions 
end 
end 

Các hình thức cho new_mobile_user_candystore_transactions là

<%= form_for [@mobile_user], url: mobile_user_candystore_transactions_path(@mobile_user), method: :post do |f| %> 

để truy cập vào phương thức tạo Candystore :: TransactionsController và không sử dụng phương thức tạo MobileUser hoặc phương thức cập nhật Candystore :: TransactionsController.

2

Trong Rails 3, giải pháp duy nhất làm việc cho tôi một cách chính xác (đối với cả tài nguyên mới và chỉnh sửa) là:

form_for @image, :url => url_for([:admin, @person, @image]) 
+0

Tôi đã theo đuổi một cái gì đó mà sửa chữa các giàn giáo _form một phần như thế này cho các lứa tuổi! Cảm ơn bạn! – nruth

+0

Vâng, nó có hiệu quả giống như viết form_for [: admin, @person, @image], vì form_for gọi url_for nội bộ. –