Tôi đang cố gắng tạo chức năng 'thẻ' cho phép người dùng "gắn thẻ" các mục mà họ quan tâm. Đây là mô hình của tôiRails 3 - Cách bạn tạo một bản ghi mới từ link_to
class tag
belongs_to :user
belongs_to :item
end
Bảng DB tương ứng có cần thiết :user_id
và :item_id
lĩnh vực.
Trong danh sách :items
Tôi muốn một liên kết bên cạnh mỗi :item
cho phép người dùng gắn thẻ :item
. Vì tôi biết số :user_id
và số :item_id
, tôi muốn tạo bản ghi :tag
mới, đặt trường id và lưu bản ghi - tất cả đều không có sự can thiệp của người dùng. Tôi đã thử các cuộc gọi sau đây để link_to
, nhưng không có hồ sơ được lưu trong cơ sở dữ liệu:
<%= link_to 'Tag it!', {:controller => "tracks",
:method => :post,
:action => "create"},
:user_id => current_user.id,
:item_id => item.id %>
(Mã này là trong vòng một:. @item.each do |item|
tuyên bố, vì vậy item.id là hợp lệ)
link_to
Cuộc gọi này tạo ra URL này:
http://localhost:3000/tags?method=post&tag_id=7&user_id=1
Không tạo bản ghi Tag
trong cơ sở dữ liệu. Dưới đây là :create
hành động của tôi trong tags_controller
def create
@tag = Tag.new
@tag.user_id = params[:user_id]
@tag.tag_id = params[:tag_id]
@tag.save
end
Làm thế nào tôi có thể nhận được link_to để tạo và lưu một kỷ lục thẻ mới?
Cảm ơn! Nó hoạt động tuyệt vời với bản sửa lỗi của bạn. Hiển thị link_to chữ ký trong câu trả lời của bạn thực sự đã giúp tôi cuối cùng hiểu những gì đang xảy ra. Nhiều đánh giá cao. –
Chỉ cần một bình luận nhanh. Trong giá trị băm url_options giá trị của khóa điều khiển phải là "mục" chứ không phải "mục". Nó sẽ cung cấp cho bạn một lỗi định tuyến ActionController khi cố gắng hiển thị liên kết. – icantbecool
@dexter, điều gì xảy ra nếu liên kết nằm ngoài ứng dụng, chẳng hạn như trong email chẳng hạn? Trường hợp sử dụng của tôi là dành cho RSVP. Tôi muốn tạo một RSVP mới trực tiếp từ liên kết email, nhưng tôi muốn ở lại RESTful. – Mohamad