حفظ التعليقات الكائن مع العلاقة مع تحديث الحالة. بناء روبي
-
26-09-2019 - |
سؤال
لدي تحديث الحالة ، والتعليق على جدول DB.
لدى المستخدم العديد من تحديثات الحالة ، ويحتوي تحديث الحالة على العديد من التعليقات. على غرار Facebook ، عندما يذهب صديق المستخدم إلى صفحة تغذية المستخدمين (صفحة العرض) ، يجب أن يكونوا قادرين على التعليق على تحديثات حالة المستخدمين.
أواجه مشكلات في حفظ تعليق أصدقاء المستخدمين .. رمزتي أدناه .. أعتقد أنه له علاقة بوحدة تحكم التعليقات ، إنشاء طريقة ، "comment = statusupdate.comments.build (params [: Comment]) "
أي إرشادات موضع تقدير كبير! شكرًا!
class UsersController < ApplicationController
def show
@user = User.find(params[:id])
@statusupdates = @user.statusupdates.paginate(:page => params[:page], :per_page => 25)
@statusupdate = Statusupdate.new
@comment = Comment.new
end
end
show.html.erb
<% form_for @statusupdate do |f| %>
<%= f.error_messages %>
<div class="field">
<%= f.text_field :content %>
</div>
<% @statusupdates.each do |s| %>
<%= s.content %><br />
<% form_for @comment do |f| %>
<%= f.error_messages %>
<div class="field">
<%= f.text_field :comment %>
</div>
<div class="field">
<%= f.hidden_field :user_id, :value => current_user.id %>
</div>
<div class="actions">
<%= f.submit "Submit" %>
</div>
<br><br>
<% end %>
<% end %>
class CommentsController < ApplicationController
def create
@comment = @statusupdate.comments.build(params[:comment])
if @comment.save
flash[:success] = "Comment created!"
redirect_to root_path
else
@feed_items = []
render 'pages/home'
end
end
end
المحلول 2
show.html.erb- لقد قمت بتغيير السطر العلوي من نموذج التعليق تحديث الحالة إلى:
<% form_for (s, s.comments.build) do |f| %>
...
class CommentsController < ApplicationController
def create
@statusupdate = statusupdate.find(params[:statusupdate_id])
@comment = @statusupdate.comments.create(params[:comment])
...
لا أعرف بالضبط ما يجري هنا ولكنه عمل بالنسبة لي ~ آمل أن يساعد شخص ما في الخروج ~
نصائح أخرى
تحقق من HTML من النموذج للتأكد من حقه. انظر أيضًا ما هي المعلمات التي يتم إرسالها إلى الإجراء إنشاء.
الشيء الرئيسي الذي أراه هو أن نماذج تحديث الحالة والتعليقات متداخلة ، وكلاهما يستخدم معلمة Block F. قد يتسبب ذلك في أن تصبح الأمور غريبة للغاية (خاصة وأن تحديد المعلمات البلوك يختلف بين Ruby 1.8 و 1.9). يبدو أيضًا أنك لا تريد فعليًا أن تتداخل الأشكال. يجب عليك أيضًا إصلاح المسافة البادئة في HTML.