حفظ التعليقات الكائن مع العلاقة مع تحديث الحالة. بناء روبي

StackOverflow https://stackoverflow.com/questions/4236054

سؤال

لدي تحديث الحالة ، والتعليق على جدول 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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top