문제

위젯 세트로 구성된 사용자 정의 페이지가있는 사이트를 작성하고 있습니다.

위젯은 블로거에서 찾을 수있는 것과 비슷하며 상당히 기본적입니다. 일부 위젯은 기본 구조 (목록, 테이블)로 데이터 수집/서식 프레젠테이션을위한 것이며 다른 위젯은보다 복잡한 기능 (블로그, 사진 앨범 등)을 제공합니다.

사용자가 페이지에 나타나는 위젯을 선택하고 재정렬 할 수 있습니다.

위젯이 STI (예 : BlogWidget, GalleryWidget)가되는 것을 고려하고 있었고 각 위젯 인스턴스에는 fkey user_id와 정렬 위치가 있습니다.

그런 다음 사용자의 show.html.erb에는 다음이 포함됩니다.

for widget in current_user.widgets
    render widget
end

더 좋은 방법이 있습니까?

도움이 되었습니까?

해결책 2

나는 다음과 같은 것을 구현하게되었습니다.

class Placement < ActiveRecord::Base
  belongs_to :widget, :polymorphic => true
  belongs_to :container, :polymorphic => true

  acts_as_double_polymorphic_join(
    :widgets =>[:blogs, :galleries, :twitter_feeds], 
    :containers => [:pages, :users, :groups]
  )

  acts_as_list :scope => :container
end

다른 팁

"위젯"과 "userwidgets"라는 두 가지 모델을 만들려고합니다.

Widgets:
  ID (Primary Key)
  Name
  Description
  etc...

UserWidgets:
  ID
  Position
  Widget_ID (Foreign Key -> Widgets.ID)
  User_ID (Foreign Key -> Users.ID)

적절한 연결을 설정하여 간단히 @user.widget을 수행하여 모든 위젯 목록을 얻을 수 있습니다. 데이터베이스에있는 이름과 동일하게 위젯 이름을 지정하면보기/레이아웃/부분에서 다음을 수행 할 수 있습니다.

<% @user.widgets do |w| %>
  <%= javascript_include_tag w.name %>
<% end %>

물론 이것은 각 위젯을 자체 자체 포함 된 JavaScript 파일 (내가 선호하는 방법)으로 분리한다고 가정합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top