рельсы 3.1.3 - форма рендера ничего не отображает для пользователей / 1 / редактировать - PullRequest
0 голосов
/ 18 февраля 2012

- edit.html.erb -

<h1>Edit User</h1>
<%= render 'form' %>
<%= link_to 'Show', @user %> |
<%= link_to 'Back', users_path %>

- _form.html.erb -

<% form_for(@user) do |f| -%>
<% if @user.errors.any? %>
  <div id="error_explanation">
    <h2><%= pluralize(@user.errors.count, "error") %> prohibited this event from being saved:</h2>

    <ul>
    <% @user.errors.full_messages.each do |msg| %>
      <li><%= msg %></li>
    <% end -%>
    </ul>
  </div>
<% end -%>
<p><%= label_tag 'login' %><br/>
<%= f.text_field :login %></p>
<p><%= label_tag 'email' %><br/>
<%= f.text_field :email %></p>
<p><%= label_tag 'password' %><br/>
<%= f.password_field :password %></p>
<p><%= label_tag 'Confirm Password' %><br/>
<%= f.password_field :password_confirmation %></p>
<p><%= submit_tag 'Update' %></p>
<% end -%>

- пользовательский контроллер -

def edit  
    @user = User.find(params[:id])  
  end  
  def update  
    if @user.update_attributes(params[:user])  
      flash[:notice] = 'User was successfully updated'  
      redirect_to(user_path(@users))  
    else  
      render :action => 'edit'  
    end  
  end  

- сгенерированная страница -

<!DOCTYPE html>
<html lang="en-US">
<head>
<title>Admin pages</title>
<link href="/assets/.css" media="screen" rel="stylesheet" type="text/css" />
<script src="/assets/jquery.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery_ujs.js?body=1" type="text/javascript"></script>
<script src="/assets/prototype.js?body=1" type="text/javascript"></script>
<script src="/assets/scriptaculous.js?body=1" type="text/javascript"></script>
<script src="/assets/opentip.js?body=1" type="text/javascript"></script>
<script src="/assets/effects.js?body=1" type="text/javascript"></script>
<script src="/assets/builder.js?body=1" type="text/javascript"></script>
<script src="/assets/controls.js?body=1" type="text/javascript"></script>
<script src="/assets/dragdrop.js?body=1" type="text/javascript"></script>
<script src="/assets/slider.js?body=1" type="text/javascript"></script>
<script src="/assets/sound.js?body=1" type="text/javascript"></script>
<script src="/assets/workers.js?body=1" type="text/javascript"></script>
<script src="/assets/application.js?body=1" type="text/javascript"></script>
<meta content="authenticity_token" name="csrf-param" />
<meta content="j5tGtFyn08+fEMzSDCX15fv0c4fyGxlxOmp9CMpeBv8=" name="csrf-token" />
</head> 
<body>

<h1>Edit User</h1>

<a href="/users/1">Show</a> |
<a href="/users">Back</a>

</body>
</html>

Это часть установки restful_authentication, у меня другие скаффолды спроектированы таким же образом, и все они работают.Потратил 2 или 3 часа на то, чтобы отследить это. Любое руководство приветствуется.

В пользователях / представлениях есть странное частичное имя _user_bar.html.erb, но я не вижу, где оно используется.

1 Ответ

0 голосов
/ 18 февраля 2012

В рельсах 3.0+ необходимо вывести блок form_for, изменив:

<% form_for(@user) do |f| -%>

на:

<%= form_for(@user) do |f| %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...