目前我有一个名为Visit
的方法,它基本上添加了Subscriber
上的访问计数器。当Subscriber
在表单中输入phone_number时,会触发此方法。我只是想创建一个看起来像Susbcriber.find_by(params[id]).last.visit
的活动记录查询(这不适用于BTW)。希望你得到我想要做的事情,基本上用电话号码打电话给最后签到的人。为了清楚起见,我会展示我的代码。
控制器方法:
def search
@subscriber = Subscriber.new
end
def visit
@subscriber = Subscriber.find_by(params[:phone_number])
if @subscriber
@subscriber.visit ||= 0
@subscriber.visit += 1
@subscriber.save
flash[:notice] = flash[:notice] = "Thank You #{@subscriber.first_name}. You have #{@subscriber.days_till_expired} until renewal"
redirect_to subscribers_search_path(:subscriber)
else
render "search"
end
end
在那里,您可以看到订阅者输入其电话号码时触发的方法。我只是想在控制台中呼叫那个人。
当前不工作的控制器方法:
def create
@subscriber = Subscriber.find(params[:subscriber_id])
@comment = @subscriber.comments.build(comments_params)
if @comment.save
flash[:notice] = "Thank you!"
redirect_to subscribers_search_path(:comments)
else
render "new"
end
end
这是需要新查询来查找刚刚输入其电话号码的订阅者的方法。
如果您需要更多信息,请告诉我?谢谢!
答案 0 :(得分:1)
我正在编辑我的答案,根据评论更具包容性。看起来你在这里遇到了很多问题,也许你需要退后一步,重建这个问题。考虑测试驱动它和/或至少验证你正在使用调试工具得到你期望的东西(byebug,pry,甚至只是明智地使用'puts'和'inspect')。
find_by方法要求您指定要尝试用于查找行的属性,以及属性的值
With ThisWorkbook.Worksheets("SheetNameYouWantToReferTo")
.Cells(i, 10).Offset(6, 0).Formula = .Cells(i, 10).Formula
End With
如果您使用的是模型的主键,只需使用find:
@subscriber = Subscriber.find_by(phone_number: params[:phone_number])
如果您正在调用控制器操作,则应始终存在params。在继续使用任何其余代码之前,请尝试检查参数。确保你得到你期望的。如果没有,请评估您的观看代码。