Вставка CSS-идентификатора в jQuery

0

У меня есть базовый отчет о комментариях, а внизу - форма для добавления нового комментария. Цель проста, но я пробовал совсем немного и не могу заставить ее работать. Когда кто-то отправляет комментарий в форме, я хотел бы, чтобы этот комментарий отображался только что выше, и он перемещает форму вниз, используя jQuery. Это работает нормально, но у меня есть 2 проблемы.

  1. Мне нужен новый комментарий, который отображается jQuery для наследования класса CSS с именем triangle-right.

  2. Мне нужна форма для очистки, она хранит последний комментарий после отправки.

Вот jQuery. Опять же, мне нужно @comment.recommendation для отображения с использованием CSS-треугольника-справа и для формы для очистки. #newrec - это форма.

$('#newrec').before('<%= escape_javascript(@comment.recommendation) %>');

В случае, если это полезно, вот точка зрения.

<% recs.each do |r| %>
    <% name = User.find_by(:id => r.user_id)%>

    <p class = "triangle-right" id ="comment_<%=r.id%>">
      <b><%=name.first_name.capitalize %> <%=name.last_name.capitalize %></b>:    <%=r.recommendation %></br></br>

    <%= link_to '<i class="icon-edit"></i>'.html_safe, edit_comment_url(r),class:"btn btn-warning" if current_user.present? && r.user_id == current_user.id %>

    <%= link_to '<i class="icon-trash"></i>'.html_safe, comment_url(r), class:"btn btn-danger", method: 'delete', remote: true if current_user.present? && r.user_id == current_user.id %>

    </p>
  <%end%>
    <!-- LIST OF RECOMMENDATIONS IS ABOVE -->
    <!-- FORM FOR RECS BELOW -->
  <div>
    <%= form_tag(commentpost_url, id: "newrec", method: 'post', remote: true) do %>
      <h4><%= "Give your recommendations:" if current_user.present? %></h4>
      <%= text_area_tag :recommendation, nil, class: "rectextarea", id: "new_rec" if current_user.present? %>
      <%= hidden_field_tag :trip_detail_id, d.id %>
      <%= hidden_field_tag :user_id, current_user.id if current_user.present?%>

    <div>
      <% if current_user.present? && @trip.userid == current_user.id %>
        <%= submit_tag 'Add Comment', class: "btn btn-large btn-success" if current_user.present? %>
      <%else%>
        <%= submit_tag 'Submit Recs!', class: "btn btn-large btn-success" if current_user.present? %>
      <%end%>
    </div>
   <% end %>

И, наконец, контроллер

def create
@comment = Comment.new
@comment.recommendation = params[:recommendation]
@comment.trip_detail_id = params[:trip_detail_id]
@comment.user_id = params[:user_id]

if @comment.save

  respond_to do |format|
   format.html { redirect_to :back, notice: 'Rec was successfully created.' }
   format.json { render action: 'show', status: :created, location: @comment }
   format.js
  end

else
  render 'new'
end

конец

Благодарю!

1 ответ

0

Решение:

  1. Если вы хотите добавить новый комментарий для показа, комментарии будут представлять собой список,. Пересмотрите это соответственно.
  2. Извлеките свой комментарий, показывая часть, часть <li> в частичную.
  3. Извлеките часть формы в частичную
  4. сделайте эти частичные в виде шаблона заменой предыдущих частей.
  5. сделать эти два частичных снова в js

Код псевдо-js, подобный этому

$('ul#comments').append('<%=j render partial: "comment", locals: {comment: @comment}')
$('#comment_form').html('<%=j render partial: "comment_form", 
                                              locals: {comment: Comment.new)') 

PS Вам действительно нужен код. Слишком много логики, и слишком много нетрадиционных вещей.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню