【问题标题】:RefineryCMS, Upload Image on FrontEnd sideRefineryCMS,在前端上传图片
【发布时间】:2012-06-18 18:57:05
【问题描述】:

很抱歉,这个问题很愚蠢,但经过几天的搜索,我仍然没有答案,我真的很喜欢这个问题。

我有refinerycms 扩展。像这样:

$ rails generate refinery:engine shop name:string logo:image

我希望它可以从我的应用程序的后端和前端进行控制。 后端没有问题。 (感谢refinerycms 团队。) 当表单仅包含“名称”时,前端没有问题。 (或任何其他没有图像类型的属性)。

图像类型属性​​有问题。

我不希望前端用户拥有与后端用户相同的图像编辑表单。 我希望表单是这样的:

<div class='field'> 
  <%= f.label :logo , "Logo"%>
  <%= f.file_field :logo %>  
</div> 

我希望前端用户加载的图像使用 Refinery::Image 保存。

我敢打赌,问题只在于我的前端控制器为商店创建操作,但我不知道应该如何覆盖它。

非常感谢您的任何建议。

【问题讨论】:

    标签: refinerycms


    【解决方案1】:

    在控制器中,您必须将“logo”参数作为Refinery::Image 实例传递给模型。为此,您需要创建一个 Refinery::Image 的实例并将其合并到模型中。

    例子:

    logo = Refinery::Image.create(image: params[:shop][:logo])
    
    @shop = Refinery::Shops::Shop.create(params[:shop].merge({logo: logo}))
    

    【讨论】:

      【解决方案2】:

      我在 FE 和我的普通控制器(不是管理员)上有带有 file_field (:logo) 的 FE 表单,我有这种方法来处理来自请求的参数:

      def model_params
          permitted = params.require(:model).permit!
          permitted[:logo] = Refinery::Image.create(image: permitted[:logo])
          return permitted
       end
      

      允许参数和创建图像格式文件。

      然后在我的创建方法中:

      def create
          if (@new_beer = ::Refinery::Models::Model.create(model_params))
            #do some stuff when it succeeds to create it
            redirect_to SOMEWHERE
          else
            redirect_to SOMEWHERE, notice: "Something went wrong!"
          end
        end
      

      希望对您有所帮助! :)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-11-29
        • 2019-08-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-27
        • 1970-01-01
        相关资源
        最近更新 更多