Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何使用';s是否来自无关的模型/控制器?_Ruby On Rails_Active Model Serializers - Fatal编程技术网

Ruby on rails 如何使用';s是否来自无关的模型/控制器?

Ruby on rails 如何使用';s是否来自无关的模型/控制器?,ruby-on-rails,active-model-serializers,Ruby On Rails,Active Model Serializers,我在JSON API中使用了ActiveModelSerializer 例如,我有一个用户模型、用户\控制器和用户\序列化程序。在我的users\u控制器中,我通过以下方式呈现json user = User.find_by_id(param[:id]) respond_with user, serializer: Api::V1::UserSerializer 现在,我还有一个注释模型、注释控制器和注释序列化器。我在comments\u controller中执行相同的操作,以呈现json

我在JSON API中使用了ActiveModelSerializer

例如,我有一个用户模型、用户\控制器和用户\序列化程序。在我的users\u控制器中,我通过以下方式呈现json

user = User.find_by_id(param[:id])
respond_with user, serializer: Api::V1::UserSerializer
现在,我还有一个注释模型、注释控制器和注释序列化器。我在comments\u controller中执行相同的操作,以呈现json

comment = Comment.find_by_id(param[:id])
respond_with comment, serializer: Api::V1::CommentSerializer
两者都很有效

但是,假设我还想在comments控制器中呈现我的用户和我的注释。我甚至不能让用户显示出来。如果我暂时删除注释代码,并做类似的事情只是为了测试的目的

#comment = Comment.find_by_id(param[:id])
#respond_with comment, serializer: Api::V1::CommentSerializer
user = User.find(1)
respond_with user, serializer: Api::V1::UserSerializer //error on this line
我将得到以下错误

NoMethodError (undefined method `user_url' for #<Api::V1::CommentsController:0x007b828f407218>):
NoMethodError(未定义的方法#的'user_url'):

这是为什么。我如何使用AMS并用其他项目响应_?最好同时使用它们各自的序列化程序将二者结合起来?

尝试通过调用用户实例变量:

@user = User.find(1)
comment = Comment.find_by_id(param[:id])
respond_with comment, serializer: Api::V1::CommentSerializer
因为它是一个实例变量,所以现在可以在视图中调用它,而无需传递它

<%= form_for @user do |f| %>
  <%= f.text_field :name %>
  <%= f.submit "Create" %>
<% end %>
  respond_with(@user, @comment) serializer: Api::V1::CommentSerializer