Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RubyonRails应用程序的扩展/插件/模块系统?_Ruby On Rails_Plugins_Module - Fatal编程技术网

Ruby on rails RubyonRails应用程序的扩展/插件/模块系统?

Ruby on rails RubyonRails应用程序的扩展/插件/模块系统?,ruby-on-rails,plugins,module,Ruby On Rails,Plugins,Module,为Rails应用程序开发“扩展”系统的最佳方法是什么 我指的是WordPress拥有的相同类型的系统,比如将函数注册到挂钩等。然后可以从管理面板激活/停用插件 有关于在RoR软件中实现这种功能的书籍/在线资料吗?Typo使用常规rails插件来实现这一点 包含插件src的文件夹: 插件列表: 用于选择边栏插件的管理界面: 我想看看这个实现,了解一些想法。Ben Hughes提到了一些实现,它们是很好的示例,可以作为很好的启动点。如果您想从头开始推出自己的解决方案,我建议如下: 创建两个表/

为Rails应用程序开发“扩展”系统的最佳方法是什么

我指的是WordPress拥有的相同类型的系统,比如将函数注册到挂钩等。然后可以从管理面板激活/停用插件


有关于在RoR软件中实现这种功能的书籍/在线资料吗?

Typo使用常规rails插件来实现这一点

包含插件src的文件夹:

插件列表:

用于选择边栏插件的管理界面:


我想看看这个实现,了解一些想法。

Ben Hughes提到了一些实现,它们是很好的示例,可以作为很好的启动点。如果您想从头开始推出自己的解决方案,我建议如下:

创建两个表/模型、小部件和用户小部件:

Widgets:
  ID (Primary Key)
  Name
  Description

UserWidgets:
  ID (Primary Key)
  User_ID (Foreign Key -> Users.ID)
  Widget_ID (Foreign Key -> Widget.ID)
现在您有了一个用于将用户关联到小部件的表。我假设您的小部件主要是通过JavaScript处理的,所以添加一个新的子目录,如下所示

/public/javascripts/widgets
现在,对于Widgets表中的每个小部件,将适当的JS文件添加到此子目录。如果您有一个名为“Clock”的小部件,请添加“Clock.js”

向用户模型添加适当的关联

has_many :user_widgets, :dependent => :destroy
has_many :widgets, :through -> :user_widgets
然后在某个视图中,您可以执行以下操作:

<% @user.widgets.each do |w| %>
  <%= javascript_include_tag "widgets/#{w}" -%>
<% end %>


无论小部件出现在什么页面上,都可能会将其放入布局中。如果您不想通过JavaScript使用动态小部件,您可以在视图/部分中的任何位置使用非常类似的视图代码。

以下建议适用于Ruby应用程序,但可以根据您的需要进行调整: