day30疑问 数据调用问题(已解决)

最初的思路是<%= link_to(order.asker_user.email,account_user_path(@user))%> 是让在account/user的controller添加一个SHOW的action想要把值传入不知道如何书写. 开始是这样写的@user = User.find(params[:id]),报错,于是认为需要把让order的信息传入 @order = Order.find(params[:id]) @user = @order.asker_user , link_to 路径的变量改为 order.asker_user 之后的修改这里改为order就可以找到 还是弄错了,其中的逻辑想不通。 询问组长,组长给我另一种的做法,使用account/order里面的show action把user的信息显示出来 def show @user = User.find(params[:id]) <%= link_to(order.asker_user.email, account_order_path(order))%>,可以运行, 但总感觉把user的信息写在order很奇怪。(加添:虽然order里面包括asker_user的数据可以调用出来,但是如果让他们的人看就会感觉很困惑,不知道你在写什么功能。) 询问YY老师后的写法 <%= link_to(order.asker_user.email, account_user_path(order.asker_user))%> account/user controller SHOW action 这样写 @user = User.find(params[:id]) 其实是自己不明白order.asker_user和User.find(params[:id]) 有什么关系?稍后询问

解答: 不同的model数据都可以在controller里面调用。order的拥有者asker_user的本来是没有model,但是我用 class_name:"User"的方法,让它可以调用usermodel。所以asker_user的本质其实就是user,需要调用 user的数据。在上面的link_to之中ordr.asker_user就是把一个对象传送到SHOW的页面。其中包含user的全部信息,当然也包括user的id,所以def show才能获得id,要不然应该会报错missing require id。