اهم الاشياء اولا. وجهات النظر تشير إلى الإجراءات في وحدات التحكم. لذلك يمكن أن يكون هناك عدة طرق عرض لكل وحدة تحكم أو حتى لا شيء.
لذا ، إذا كنت تريد تقديمها @reviews
و @logs
في نفس الصفحة ، يجب عليك أولاً إنشاء متغيرات المثيل في نفس الإجراء ثم تقديم كلا الجزئيين في نفس الإجراء. كيف تفعل ذلك؟ سهل. أولاً ، وصلت إلى وحدة التحكم التي عرضتها للتو وتعديل ذلك show
عمل.
def show
# You can set the variable in the if-clause
# And you also need to use static finders with a hash as an argument in Rails4
if (@user = User.find_by(name: params[:id]))
@reviews = @user.reviews.all
@logs = @user.logs.all
# You don't need to call render explicitly
# if you render the view with the same name as the action
else
render file: 'public/404', status: 404, formats: [html]
end
end
ثانياً: تذهب إلى /app/views/reviews/show.html.erb
قالب ووضع كلا الجزئيين هناك مثل هذا (هذا مجرد مثال ، اضبط العلامات الخاصة بك لتناسب احتياجاتك).
<h1> Reviews and Logs</h1>
<div id="reviews_part">
<%= render @reviews %>
</div>
<div id="logs_part">
<%= render @logs %>
</div>
الآن قم بإنشاء 2 جزئيين /app/views/reviews/_review.html.erb
و /app/views/logs/_log.html.erb
ووضع كل العلامات المطلوبة هناك (استخدم المتغيرات العادية review
و log
للتمثيل الكائنات المتكررة). سوف القضبان التلقائي تكرار تلك الجزئية عدة مرات حسب الحاجة.
أو يمكنك استدعاء العرض الجزئي بشكل واضح
<div id="reviews_part">
<% @reviews.each do |review| %>
<%= render review %>
which is the same as
<%= render partial:"reviews/review", locals:{review:review} %>
<% end %>
</div>