2

ユーザーのフォルダーのindex.html.erbにあるsimple_formgemの使用方法を勉強しています。私は成功しません。奇妙なことに、それは_form.html.erbで機能しています。なんで?

users_controller.rb

def index
   @users = User.find_by_sql(["SELECT id, name, login, password
                               FROM users"])
end

users/index.html.erb
<%= simple_form_for @users do |f| %>
  <p>
    <%= f.input :name %>
  </p>
  .
  .
  .
  <p>
    <%= f.button :submit %>
  </p>
<% end %

この例外が発生しています:NilClass:Classの未定義のメソッド `model_name'

何か案は?

4

1 に答える 1

3

ユーザーの配列のフォームを作成しようとしていますが、配列ではsimple_form_forなく単一のレコードを取得しています。ユーザーごとに1つずつ、フォームのリストが必要な場合は、次のようになります。

users / index.html.erb

<% @users.each do |user| %>
  <%= simple_form_for user do |f| %>
    <p>
      <%= f.input :name %>
    </p>
    <p>
      <%= f.button :submit %>
    </p>
  <% end %>
<% end %>

しかし、これは奇妙なことのように思えます。このフォームnewは、インデックスページではなく、あなたのページにあるべきではありませんか?

または、インデックスページにユーザーのリストと一緒にユーザーのフォームを作成する場合は、indexアクションでそのユーザーを作成する必要があります。

def index
  @users = User.find_by_sql(["SELECT id, name, login, password
                           FROM users"])
  @user = User.new
end

次に、ビューでフォームを作成し、simple_form_for @user do |f| ...を使用してユーザーのリストにアクセスすることもできます@users

于 2012-12-07T22:03:54.927 に答える