如何添加在控制器中使用devise_invitable的功能。我想添加其他字段,如消息,proeject_id以及邀请,但不知道从哪里开始?任何人都有devise_invitable的经验?
这里的devise_invitable:link text
如何添加在控制器中使用devise_invitable的功能。我想添加其他字段,如消息,proeject_id以及邀请,但不知道从哪里开始?任何人都有devise_invitable的经验?
这里的devise_invitable:link text
的devise_inevitable引擎定义了两个视图文件和一个控制器。您很可能不需要对其定义的控制器进行任何修改。发送邀请给用户的形式被定义here,你会覆盖视图的渲染,像这样:
#app/views/invitations/new.html.erb
<% form_for resource_name, resource, :url=> invitation_path(resource_name) do |f| %>
<!-- Totally sweet new user invitation code goes here -->
<% end %>
包含代码供用户点击电子邮件中的链接后完成注册的形式here和你会重写它的渲染,像这样:
#app/views/invitations/edit.html.erb
<% form_for resource_name, resource, :url=> invitation_path(resource_name), :html=>{:method => :put } do |f| %>
<!-- Totally sweet new user registration information goes here. -->
<% end %>
第一种观点是什么将实际创建的资源对象,所以这是更可能的,你会想是树立了一个消息用户看到,他们也被邀请参加什么项目。您可能还想覆盖app/views/devise_mailer/invitation.html.erb以更改用户收到的电子邮件。
为了覆盖invitations controller你需要这样做:
#app/controllers/devise/invitations_controller.rb
class Devise::InvitationsController < ApplicationController
def create
#totally rad create stuff here.
end
end
设计及其扩展都是Rails的引擎,因此请求将首先寻找一个合适的控制器/模型/视图/帮手将文件存储在您的应用程序目录中,然后存储在供应商/ gems中,然后最终在定义引擎的gem目录中。
谢谢帕特里克这是非常有用的,但我卡住的地方,我可以覆盖Invitable控制器吗?我想要做这样的事情:def create self.resource = resource_class.invite!(params [resource_name]) if resource.errors.empty? #set_flash_message:notice,:send_instructions render:js =>“alert('Hello Rails');” 结束 – AnApprentice 2010-11-08 22:53:32
我想要做的是创建一个模式对话框,允许用户邀请其他用户并添加一条消息。我想让DEF CREATE控制器用JS回应,所以我可以更新对话框,但是我无法正常工作。想法? – AnApprentice 2010-11-08 22:54:45
我在上面的答案中引入了关于覆盖控制器的信息。请记住,这可能会损害您未来升级这款宝石的能力。确保记录你所做的事情。 – 2010-11-08 23:36:25