【问题标题】:Rails-Attach file using multiple controllersRails-使用多个控制器附加文件
【发布时间】:2016-05-22 14:55:02
【问题描述】:

我是 Rails 新手。我有一个帖子、评论和附件控制器。因为我使用的是 FilePicker API,所以我制作了自己的 Attachments 控制器。我正在尝试构建它,以便用户可以将文件附加到帖子中,也可以根据需要将文件附加到评论中。

帖子控制器

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

因此,我将 cmets 附加到帖子,并通过嵌套路由创建了该关联,并通过 has_many 和 belongs_to 创建了模型之间的关联。现在我需要对附件做同样的事情还是有另一种方法?我想要帖子/评论和附件之间的关系,以便用户可以附加文件,但我的应用程序中也会有一个单独的部分来纯粹上传/下载文件,而不需要“帖子”,这就是为什么我有一个附件的单独控制器。任何关于如何构建此功能以便用户可以将文件附加到他们的帖子的建议将不胜感激。

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    我建议您将附件拆分为两个单独的实体。我会说 post_attachments 属于帖子/cmets,然后我会创建第二个模型实体,称为类似 direct_upload 的东西,它根本不与帖子/cmets 相关联,并处理您提到的直接上传/下载情况。这将使您更容易维护,因为您已经在滚动自己的文件附件,并且如果有人与您合作,那么每个模型类的预期内容将会很清楚。

    【讨论】:

    • 我正在考虑做同样的事情,只是按照你的建议保持干净。关于如何将我拥有的当前附件模型与帖子模型集成的任何建议?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多