rails generate devise_invitable:views
生成了视图 我还编辑了 users/invitations/new.html.erb 中生成的视图,以包含我想要包含名字和姓氏的字段
<%= form_for(resource, as: resource_name, url: invitation_path(resource_name), html: { method: :post }) do |f| %>
<%= render "users/shared/error_messages", resource: resource %>
<% resource.class.invite_key_fields.each do |field| -%>
<div class="field">
<%= f.label field %><br />
<%= f.text_field field %>
</div>
<div class="field">
<%= f.label field %><br />
<%= f.text_field :fist_name %>
</div>
<div class="field">
<%= f.label field %><br />
<%= f.text_field :last_name %>
</div>
<% end -%>
<div class="actions">
<%= f.submit t("devise.invitations.new.submit_button") %>
</div>
<% end %>
我已将这行代码 # devise_for :users, controllers: { invitations: 'users/invitations' }
添加到
routes.rb
文件中我还创建了一个控制器来继承 Devise 控制器
def update
if some_condition
redirect_to root_path
else
super
end
end
def create
end
def new
end
end
但是,当我去 new_user_invitation_path
发出邀请时,我只收到电子邮件字段。请问如何制作自定义字段?
表单字段:在您的视图 (users/invitations/new.html.erb
) 中,您尝试在迭代
resource.class.invite_key_fields
的循环内呈现名字和姓氏字段。但是,这些字段应该位于循环之外,并且应该作为普通格式字段添加。
<%= form_for(resource, as: resource_name, url: invitation_path(resource_name), html: { method: :post }) do |f| %>
<%= render "users/shared/error_messages", resource: resource %>
<% resource.class.invite_key_fields.each do |field| -%>
<div class="field">
<%= f.label field %><br />
<%= f.text_field field %>
</div>
<% end -%>
<div class="field">
<%= f.label :first_name %><br />
<%= f.text_field :first_name %>
</div>
<div class="field">
<%= f.label :last_name %><br />
<%= f.text_field :last_name %>
</div>
<div class="actions">
<%= f.submit t("devise.invitations.new.submit_button") %>
</div>
<% end %>
控制器继承:看起来您已经创建了一个自定义控制器来继承 Devise 控制器 (users/invitations_controller.rb
)。确保您已正确配置路由以使用此自定义控制器。
devise_for :users, controllers: { invitations: 'users/invitations' }
仔细检查您是否使用了正确的控制器名称 (Users::InvitationsController
),并且您是否已在控制器中正确定义了
new
、
create
和
update
操作。
自定义操作:您似乎已在自定义控制器中定义了 create
、
new
和
update
操作,但实际上并未向这些操作添加任何逻辑。您应该添加必要的逻辑来处理邀请创建和更新过程。例如:
class Users::InvitationsController < Devise::InvitationsController
def create
# Your logic to create the invitation
end
def new
# Your logic to prepare data for the new invitation form
end
def update
# Your logic to update the invitation
end
end
确保根据应用程序的要求实现这些操作所需的逻辑。
设计视图:检查是否已使用 rails generate devise_invitable:views
命令生成并自定义设计视图。您的自定义应该反映在
users/invitations/new.html.erb
文件中。