在使用Grape Entity时,有时我们希望公开内部/相关对象的一些字段。我们可以通过以下方式简单地做到这一点:
<!-- MODAL FOR MESSAGE THREAD -->
<div id="threadmessage" class="modal fade" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h3>Message Thread</h3>
</div>
<div class="modal-body" style="height: 300px;" >
<div class="row" style=" margin-left: 30px; margin-bottom: 5px; left: 20px; width: 550px; height: 200px; overflow: auto;">
<div>
@foreach ($messageThread as $thread)
{{$thread->message}}
<br>
@endforeach
</div>
<br>
</div>
<div>
<br>
<div class="col-md-2">
<b> Message: </b><br>
</div>
<div class="col-md-10">
<textarea required=" " id="messageContent" style="resize: none;" class="form-control" rows="2"></textarea>
</div>
</div>
<br>
</div>
<div class="modal-footer">
<div>
<button type="button" id="btn-message" class="btn btn-default" data-dismiss="modal" style="background-color: #3c5fa6; color: white;">
Send <i class="fa fa-paper-plane-o ml-1"> </i>
</button>
</div>
</div>
</div>
</div>
但是,如果许多字段需要这种处理,则可能会非常重复。有没有一种方法可以定义委托/转发,以便一堆expose(:bar) { |entity| entity.foo.bar }
与另一个对象相关联?
答案 0 :(得分:0)
为foo
类创建一个单独的实体,我们将其称为API::Entities::Foo
。那么你可以
expose :foo, using: API::Entities::Foo
您必须遵循REST准则才能像这样进行序列化。您正在处理resources。不要将其分解为扁平,繁琐的数据结构。