2016-02-25 62 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) %> 
相關問題