使用 Design gem,它如何在编辑表单中预填充表单值以及如何将其复制到其他地方



我正在尝试使用部分将登录、注册和编辑表单(从设计)放入引导模式中。我已经成功地做到了这一点,为表单创建部件(包装在模态代码中)并将它们呈现在application.html.erb中,如下所示:

<%= render 'articles/sign_up_modal' %>
<%= render 'articles/sign_in_modal' %>
<%= render 'articles/edit_profile_modal' %>

在应用程序.html.erb的顶部,我有:

<script type="text/javascript"> $(function () { $("#sign_up").modal({show:false });</script>
<script type="text/javascript"> $(function () { $("#sign_in").modal({show:false });</script>
<script type="text/javascript"> $(function () { $("#edit_profile").modal({show:false });</script>

其中"sign_up"、"sign_in"和"edit_profile"表示部分模态的 id。然后,通过单击 _header.html.erb 部分中的按钮来显示模式:

<%= link_to '<button type="button" class="btn btn-primary">Edit Profile</button>'.html_safe, "#edit_profile", "data-toggle" => "modal" %>

一切都很好,除了编辑配置文件模式表单没有用适当的值预填充表单,除非我在单击按钮显示模态时也在编辑页面上。如何获取"编辑配置文件"模式表单以预填充用户数据,无论用户在后台的哪个页面上?

这有意义吗?请告诉我如何澄清我的问题。谢谢!

答案是由 reddit 上的 u/alec5216 提供给我的。

他说:

看看设计来源。

https://github.com/plataformatec/devise/blob/master/app/views/devise/registrations/edit.html.erb

您将看到表单绑定到"资源"变量,该变量将成为用户模型的实例。我敢打赌,如果您在部分而不是资源中使用current_user,您将获得所需的效果。

这奏效了。有关完整的对话,请参见此处。

在这种情况下,您可能必须进行 AJAX 调用才能获取所需的数据。

数据本身可以是 JSON(用于客户端呈现),也可以是使用 layout: false 选项呈现的完整 html 表单。我通常选择前者,因为它更快、更容易实现,除非你的项目是单页 js 应用程序。

您可以在 StackOverflow 上找到有关引导 ajax modals 的更多信息。

最新更新