当我调用我的帮助方法时,Rails返回“未定义的方法”

时间:2015-07-29 02:56:11

标签: ruby-on-rails

我有一个简单的FriendsController

class FriendsController < ApplicationController

    helper_method :get_friends_array

    def create

        @bill = Bill.find(params[:bill_id])
        @friend = @bill.friends.build(friend_params)

        if @friend.save
            add_friends_array(@friend.name)
            redirect_to bill_path(@bill)
        else
            redirect_to root_path
        end
    end

    def destroy
        @bill = Bill.find(params[:bill_id])
        @friend = @bill.friends.find(params[:id])
        @friend.destroy
        redirect_to bill_path(@bill)
    end



    # None CRUD methods

    friends_array = Array.new

    def add_friends_array(name)
        friends_array << name
    end

    def get_friends_array
        friends_array
    end

    private

    def friend_params
        params.require(:friend).permit(:name)
    end
end

当我尝试在视图<p><%= f.label :payer %> <%=f.select :payer, options_for_select(get_friends_array)%></p>中的某个表单中调用以下行时 它返回undefined local variable or method get_friends_array'`

为什么?是因为我在另一种方法中调用方法吗?或者它完全是另一回事?

谢谢!

编辑:这与视图不是朋友视图的事实有关吗?我实际上是在另一个Model的视图中调用get_friends_array。如果是这样的话,解决这个问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

  

为什么?是因为我在另一个人中调用一种方法   方法

没有

  

是否与视图不是朋友视图这一事实有关?   我实际上是在另一个Model的视图中调用get_friends_array。如果   在这种情况下,解决这个问题的最佳方法是什么?

很可能是的,您尝试使用此辅助方法的页面可能来自另一个控制器,而不是FriendsController

如果朋友的名字来自您的数据库,您应该能够通过pluck填充数组:Friend.pluck(:name, :id)

有关辅助方法的更多信息 - https://stackoverflow.com/a/3993323/753705