【问题标题】:Call devise resource object from some other controller从其他控制器调用设计资源对象
【发布时间】:2013-10-10 10:15:32
【问题描述】:

我的应用程序中有密码更新。我必须从其他控制器调用相同的表单。我添加了相同的表单,但它给了我错误未定义的局部变量或方法“资源”。如何从任何其他控制器调用更新密码? 我的表格是这样的:

<%= simple_form_for(resource, as: resource_name, url: update_password_registrations_path(resource), html: { method: :put }, remote: true) do |f| %>
  <div class="form-inputs">
  <%= f.input :current_password, required: true, wrapper: :prepend, error: true do %>
    <span class="add-on"><i class="ss-icon ss-key"></i></span>
    <%= f.input_field :current_password, placeholder: "Old Password" %>
  <% end %>
  <%= f.input :password, required: true, wrapper: :prepend, error: true do %>
      <span class="add-on"><i class="ss-icon ss-key"></i></span>
      <%= f.input_field :password, placeholder: "New Password" %>
  <% end %>
  <%= f.input :password_confirmation, required: true, wrapper: :prepend, error: true do %>
        <span class="add-on"><i class="ss-icon ss-key"></i></span>
        <%= f.input_field :password_confirmation, placeholder: "New Password Confirmation" %>
  <% end %>
</div>
  <%= f.button :submit, "Update", class: "btn btn-primary" %>
<% end %>

【问题讨论】:

  • 我认为资源对象的范围不超出设计视图或控制器或模型。
  • 请贴一些代码。
  • 已经更新了上面表格的代码

标签: ruby-on-rails-3.2 devise


【解决方案1】:

您的资源就是您所谓的设计资源。所以它可能是用户。

替换

<%= simple_form_for(resource, as: resource_name, url: update_password_registrations_path(resource), html: { method: :put }, remote: true) do |f| %>

<%= simple_form_for(@user, url: update_password_registrations_path(@user), html: { method: :put }, remote: true) do |f| %>

确保您在控制器中设置了@user。如果是当前用户的表单,您可以将@user 替换为current_user

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-25
    • 1970-01-01
    • 1970-01-01
    • 2015-02-25
    • 1970-01-01
    • 2014-10-07
    • 1970-01-01
    相关资源
    最近更新 更多