У меня есть приложение для рельсов. Я показываю больше частичных (пользователь, задача, беседа, сообщение) из разных классов на странице users /: id/show. Я установил все переменные экземпляра (для других классов) в упражнении def shows.controller.больше рельсов части на той же странице
Кажется, что это немного тяжело, так лучше ли это? (Я использую @task и @message для AJAX-вызовов.)
def show
@user = User.find(params[:id])
if Task.between(current_user.id, @user.id).present?
@tasks = Task.uncompleted.between(current_user.id, @user.id).order("created_at DESC").includes(:assigner).paginate(page: params[:page], per_page: 12)
@task = Task.new
if Conversation.between(current_user.id, @user.id).present?
@conversation = Conversation.between(current_user.id, @user.id).first
@messages = @conversation.messages.includes(:user)
@message = Message.new
respond_to do |format|
format.html
format.js { render :template => "tasks/update.js.erb", :template => "tasks/destroy.js.erb", layout: false }
end
end
else
redirect_to user_profile_path(@user)
end
end
ОБНОВЛЕНО:
пользователей/шоу:
<%if @conversation%>
<%= render 'conversations/show' %>
<% end %>
<tbody class="newtaskinsert2">
<%= render partial: "tasks/task_between", collection: @tasks, as: :task %>
</tbody>
беседы/_show:
<div class="chatboxcontent">
<% if @messages.any? %>
<%= render @messages %>
<% end %>
</div>
<div class="chatboxinput">
<%= form_for([@conversation, @message], :remote => true, :html => {id: "conversation_form_#{@conversation.id}"}) do |f| %>
<%= f.text_area :body, class: "chatboxtextarea", "data-cid" => @conversation.id %>
<% end %>
<%= form_for([@conversation, @message], html: {class: "refile_form"}, remote: true) do |form| %>
<span class="btn btn-success btn-sm btn-file">Choose file
<%= form.attachment_field :message_attachment, direct: true, presigned: true, class: "choosefile" %></span>
<%= form.submit "Send File", class: "btn btn-primary btn-sm btn-submit-refile", style:"display:none"%>
<% end %>
<span id="progresspercent"></span>
</div>
Сергей, прошу прощения за длительный ответ. Не могли бы вы показать мне через образец кода, как бы вы реорганизовали мои пользователи/шоу и контроллер? Я обновил свой вопрос. Как вы видите на странице users/show, я визуализую задачи и беседу, а в частилизованном разворачивании я показываю формы сообщений/сообщений. –
Я обновил свой ответ –