繁体   English   中英

更新Rails动作中的数组?

[英]Update array in rails action?

我在操作中有以下代码:

@user = @current_user
@user.votes[1430]='up'
@user.update_attributes(params[:user])

投票是一种字符串类型,没有默认值-我只想在发生此操作时第一次设置它。

不幸的是,我收到此错误:NoMethodError

当您没有想到的时候,您有一个零对象! 计算nil.votes时发生错误

有什么想法我做错了吗?

错误的原因似乎是@user是nil引用。

您可以通过使用日志记录并在控制台窗口中进行检查来确认这一点:

logger.info“用户为零”,如果@ user.nil?

您将@user分配为@current_user的值。 我之前已经看过这种模式,通常current_user是一个在其他地方声明的函数,而不是实例变量。 如果使用的是该模式,则该行应类似于@user = current_user。

(另外,如果投票是一个字符串,则第二行似乎是指向该字符串的索引1430,这可能也不是您想要的。)

我不想发表评论,因为我不想劫持Evil Trouts的回复,而且我们似乎正在偏离最初所说的内容。

不幸的是,我收到此错误:NoMethodError

当您没有想到的时候,您有一个零对象! 计算nil.votes时发生错误

为此,请看authlogic示例应用程序。 我的猜测是您没有设置适当的before_filter ,也不需要用户登录该操作。

1430实际上是两个单独的ID

我没有完全遵循。 这是两个ID的串联? ID是什么? 老实说,我从未在数据库中使用数组作为字段类型,所以我不知道它的优点是什么,但是每当我想到一个数组是一个好主意时,我通常会问使其成为一个单独的模型(因此是表)不是更好。

听起来您所描述的情况可能有一个QuestionUser可以对它进行投票。 如果是这样,我可能会有一个单独的Voteable模型,该模型将使用户提出他们可以投票赞成的问题。

也许如果您对这方面有更多的了解,我可以提出更好的建议。 干杯。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM