我有一个简单的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
。如果是这样的话,解决这个问题的最佳方法是什么?
答案 0 :(得分:1)
为什么?是因为我在另一个人中调用一种方法 方法
没有
是否与视图不是朋友视图这一事实有关? 我实际上是在另一个Model的视图中调用get_friends_array。如果 在这种情况下,解决这个问题的最佳方法是什么?
很可能是的,您尝试使用此辅助方法的页面可能来自另一个控制器,而不是FriendsController
。
如果朋友的名字来自您的数据库,您应该能够通过pluck
填充数组:Friend.pluck(:name, :id)
有关辅助方法的更多信息 - https://stackoverflow.com/a/3993323/753705