2009-04-02 41 views
5

Khi tôi thêm một "sản phẩm" mới sử dụng giàn giáo của tôi tạo đường ray ứng dụng, các dòng sau đúng cách thêm một sản phẩm mớitruy cập vào các thông số POST

@product = Product.new(params[:product]) 

Khi tôi cố gắng thêm một sản phẩm mới sử dụng URL sau (cố gắng để POST dữ liệu từ một chương trình java).

http://localhost:3000/products?serial=555&value=111 

Sản phẩm này không được tạo ra, tuy nhiên tôi có thể truy cập vào "nối tiếp" và "giá trị" giá trị như thế này:

@product = Product.new 
@product.serial=params[:serial] 
@product.value=params[:value] 
@product.save 

Để nhầm lẫn hơn nữa tôi, nếu tôi sử dụng ứng dụng đường ray để thêm một sản phẩm mới, các biến số params[:serial]params[:value] bị trống.

Ai đó có thể vui lòng chỉ cho tôi đúng hướng.

Cảm ơn

Trả lời

9

Phương thức Model.new lấy hàm băm.

params[:product] thực sự chứa một cái gì đó giống như {:serial => 555, :value => 111}

Url bạn sẽ muốn sử dụng là:

http://localhost:3000/products?product[serial]=555&product[value]=111 

(Hãy chắc chắn rằng bạn đang thực sự sử dụng POST)

Nếu bạn muốn giữ của bạn sơ đồ url hiện tại bạn sẽ phải sử dụng:

@product = Product.new({:serial => params[:serial], :value => params[:value]}) 

Bạn cũng có thể xác định chính xác những gì đã có sẵn bên trong params bằng cách in nó ra để an ủi sử dụng:

p params 

Chúc may mắn!

+0

Cảm ơn, đã làm việc hoàn hảo – brodie31k

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