1

非常にばかげた質問で申し訳ありませんが、数日間検索してもまだ答えがなく、本当にスタックオーバーフラブです。

私は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 で保存したいと考えています。

問題はショップのフロントエンドコントローラー作成アクションにのみあると思いますが、どのように上書きするべきかわかりません。

ご提案いただきありがとうございます。

4

2 に答える 2

2

コントローラーでは、「ロゴ」パラメーターをRefinery::Imageインスタンスとしてモデルに渡す必要があります。そのためには、 のインスタンスを作成し、Refinery::Imageそれをモデルにマージします。

例:

logo = Refinery::Image.create(image: params[:shop][:logo])

@shop = Refinery::Shops::Shop.create(params[:shop].merge({logo: logo}))
于 2012-09-27T18:15:21.340 に答える
0

FE に file_field (:logo) を含む FE フォームがあり、通常のコントローラー (管理者ではない) には、リクエストからパラメーターを処理する次のメソッドがあります。

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

パラメータを許可し、画像フォームファイルを作成します。

そして、私の create メソッドで:

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

それが役立つことを願っています!:)

于 2017-08-09T11:13:01.210 に答える