2013-06-11 3 views
0

Мой contorller, как этоActiveSupport :: HashWithIndifferentAccess

class FriendController < ApplicationController 
    def friend_list 
    @user = User.new 
    end 

    def be_mine_friend 
    @user = params[:user] 
    if @user.save? 
     redirect_to friend_mine_friend_url 
     flash[:notice] = "#{@user[:name]} have been added to my friend list" 
    else 
     redirect_to friend_friend_list_path 
    end  
    end 

    def mine_friend 
    @title = "Details list of Mine Friend" 
    @friend = @user.paginate(page: params[:page], per_page: 10) 
    respond_to do |format| 
     format.html 
     format.json { render json: @friend } 
    end 
    end 
end 

Посмотреть страницу для friend_list

<div class="container"> 
     <%= notice %> 
     <%#= errors %> 
     <%= form_for(@user, url: friend_be_mine_frien_path) do |user| %> 
      <%= user.text_field 'name', placeholder: "Your name Please" %></br> 
      <%= user.text_field 'email', placeholder: "Your Email Please" %></br> 
      <%= user.text_field 'address', placeholder: "Your Address Please" %></br> 
      <%= user.submit "Be Mine Friend", class: "btn btn-primary" %> 
     <% end %> 
    </div> 

view page for mine_friend 

<div class="container"> 
    <p><strong><%= @title %></strong><p> 
     <%= notice %> 
    <%= will_paginate @friend, previous_label: "<<", next_label: ">>", class: "pagination pagination-large" %> 
    <table class="table table table-striped"> 
     <tr> 
      <th>Name</th> 
      <th>Address</th> 
      <th>Email</th> 
     </tr> 
     <% @friend.each do |friend| %> 
     <tr>  
      <td><%= friend.name %></td> 
      <td><%= friend.address %></td> 
      <td><%= friend.email %></td> 
     </tr> 
     <% end %> 
    </table> 
</div> 

и модели

class User < ActiveRecord::Base 
    attr_accessible :address, :email, :message, :name 

    validates :address, :email, :message, :name, presence: :true 
end 

Я пока я пытаюсь сохранить пользователя из friend_list I получить такие

Processing by FriendController#be_mine_friend as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"5A1dXtuYJpfqpOphkdl+WA657T3ok2zu/8U1v1B8tEg=", "user"=>{"name"=>"Amritdeep", "email"=>"[email protected]", "address"=>"Bou"}, "commit"=>"Be Mine Friend"} 
Completed 500 Internal Server Error in 1ms6090>: 

ошибка

NoMethodError - undefined method `save?' for #<ActiveSupport::HashWithIndifferentAccess:0x00000003c06090>: 

Что я должен делать? У вас, ребята, есть решение? Я не знаю, почему это ошибка ActiveSupport::HashWithIndifferentAccess. Вы, ребята, знаете об этом?

ответ

5
@user = params[:user] 
if @user.save? 

Параметры [: user] - это хэш. это не пользовательский объект. Это норма:

@user = User.create(params[:user]) 
+0

Вместо. Использовать .ново, после чего спросите, сохранены или нет. – lucianosousa

Смежные вопросы