2016-02-25 63 views
1

为什么我会得到一个未定义的方法错误,每当我使用的代码块:未定义的方法轨4

<%= @user_infos.website %>

但是当我使用的每个循环的工作?

<% @user_infos.each do |user| %> 
    <%= user.website %> 
<% end %> 

UserInfos控制器:

class UserInfosController < ApplicationController 
    before_action :set_user_info, only: [:show, :edit, :update, :destroy] 

    respond_to :html 

    def index 
    @user_infos = UserInfo.all 
    respond_with(@user_infos) 
    end 

    def show 
    respond_with(@user_info) 
    end 

    def new 
    @user_info = current_user.user_infos.build 
    redirect_to :back 
    end 

    def edit 
    end 

    def create 
    @user_info = current_user.user_infos.build(user_info_params) 
    @user_info.save 
    redirect_to :back 
    end 

    def update 
    @user_info.update(user_info_params) 
    respond_with(@user_info) 
    end 

    def destroy 
    @user_info.destroy 
    respond_with(@user_info) 
    end 

    private 
    def set_user_info 
     @user_info = UserInfo.find(params[:id]) 
    end 

    def user_info_params 
     params.require(:user_info).permit(:website, :location) 
    end 
end 

首页控制器:

class HomeController < ApplicationController 
    def index 
    @questions = Question.all.order("created_at desc") 
    end 

    def profile 
    @user = User.find(params[:id]) 
    @answer = Answer.all.order("created_at") 
    @questions = Question.all.order("created_at") 
    @user_info = UserInfo.new 
    @user_infos = UserInfo.all.order("created_at desc") 
    end 
end 

我的意图是不循环,但只是简单的显示纵断面图中的UER的信息。循环引起双重段落,这当然不是我想要的。

+0

这是因为@user_infos是@user_info实例的数组。该数组没有一个方法'网站',实例虽然。 –

回答

1

@user_infos集的记录,而不是一个单一的记录。所以你只是不能使用<%= @user_infos.website %>,它会给你undefined method错误。

0
@user_infos = UserInfo.all.order("created_at desc") 

给你所有的UserInfo的,所以你不能使用

<%= @user_infos.website %> 

,如果你是不是写一个循环,你依然可以只使用地图把所有的网站在数组

<%= @user_infos.map(&:website) %> 
相关问题