Я новичок в Rails. У меня есть контроллер сообщений, комментариев и вложений. Я создал свой собственный контроллер вложений, так как я использую API FilePicker. Я пытаюсь создать его так, чтобы пользователь мог прикрепить файл к сообщению, а также приложить файл к комментарию, если они того пожелают.Rails-Прикрепить файл с использованием нескольких контроллеров
Сообщений Контроллер
def create
@post = current_user.posts.build(post_params)
if @post.save
flash[:success] = "Your post has been created!"
redirect_to root_path
else
flash[:alert] = "Your new post couldn't be created! Please check the form."
render :new
end
end
...
private
def post_params
params.require(:post).permit(:caption, :user_id)
end
Вложения Контроллер
def create
title = params[:attachment][:title]
if Attachment.exists?(:title => title)
redirect_to attachments_path
else
@attachment = current_user.attachments.build(attachment_params)
@attachment.user_id = current_user.id
name = params[:attachment][:name]
@attachment.save
redirect_to attachments_path
end
end
...
private
def attachment_params
params.require(:attachment).permit(:title, :user_id, :name)
end
Сообщения Просмотр для подачи пост
<%= simple_form_for(@post) do |f| %>
<div class="profile_container">
<div class="updateArea">
<%= f.text_area :caption, class: "textarea", placeholder: "Post here", label: false %>
<%= f.button :submit, "Post", disabled: true, class: "post_button", id: "post_button_padding" %>
<%# <%= f.association :user %>
</div>
</div>
Вложения загрузить файл
<%= filepicker_js_include_tag %>
<%= simple_form_for @attachment, :html=> { id: 'file_stack_form' } do |f| %>
<%= f.filepicker_field :title, multiple: 'false', onchange: 'onUpload(event)', services: "CONVERT, BOX, COMPUTER, DROPBOX, EVERNOTE, FACEBOOK, GMAIL, IMAGE_SEARCH, FLICKR, GITHUB, GOOGLE_DRIVE, SKYDRIVE, URL, WEBCAM, INSTAGRAM, VIDEO, AUDIO, CLOUDDRIVE, IMGUR" %>
<%= f.submit %>
<% end %>
routes.rb
resources :posts do
resources :comments
end
resources :attachments
Так что есть комментарии, прикрепленные к сообщениям и создал эту ассоциацию с помощью вложенных маршрутов и ассоциаций между моделями через has_many и belongs_to. Теперь мне нужно сделать то же самое для вложений или есть другой метод? Я хочу, чтобы отношения между сообщениями/комментариями и вложениями позволяли пользователю прикреплять файлы, но у меня также будет отдельный раздел в моем приложении, чтобы загружать и скачивать файлы без необходимости «сообщения», поэтому у меня есть отдельный контроллер для вложений. Любые советы о том, как создать эту функциональность, чтобы пользователь мог прикрепить файл к своему сообщению, были бы очень благодарны.
Я думал о том, чтобы сделать то же самое, чтобы сохранить его в чистоте, как вы предполагали. Любые советы о том, как я буду интегрировать текущую модель приложений, которую я имею, с моделью сообщений? – user3318660