たれみみマンデー

コントローラー内のrender actionでエラー【Ruby on Rails】

 

Render and/or redirect were called multiple times in this action. Please note that you may only call render OR redirec

ってエラーでた。

場所はcontrollerの中のrender action :*****

 

【Rails】コントローラの中で途中で抜ける方法 - 東京伊勢海老通信

 

解決した。

render action: :****  and return

 

最後にこう書けば良いみたい。

うまいことコントローラー抜けれるっぽい。

複数モデルの同時フォーム送信

kimuraysp.hatenablog.com

モデルのモデルのモデルをネストして画像も同時にフォームで保存

ポイントはfields_forとobjectで画像にアクセス。

プレビュー出すのアクセスかなりハマった。

<div class="image-upload-container">
     <%= f.fields_for :thumbnails do |t| %>
        <div class="image-upload-box">
    
        <%= t.file_field :image, class: "btn-upload" %>
        <% if  t.object.image.url.present? && n>=3 %>
         <%= t.check_box :_destroy , class: "check-destroy" %>
          <%= t.label :_destroy , class: "btn-destroy" do %>
          <% end %>
        <% end %>
   
        <%= t.label :image, class: "btn-upload-label" do %>
   
          <% if t.object.image.url.present? %>                                                         
            <%= image_tag t.object.image.url, class:"uploaded-image" %>
          <% end %>
          <span class="label-plus">+</span>
          <span class="label-text">画像未選択</span>
   
        <% end %>
   
        <% n+=1 %>
      </div>
    <% end %>
  </div>

 

自分用ビボウロク。

Railsでスマホから画像をアップしたときに画像が回転する問題

Carriwave等々でRailsスマホから画像をアップすると時々横向きに回転するのでその対策法。

app/uploaders/image_uploader.rb   

   process :fix_exif_rotation                                                                                                           
     def fix_exif_rotation
        manipulate! do |img|
        img.auto_orient!
        img = yield(img) if block_given?
        img 
        end 
      end

 

英語でもなかなか出てこなかったので

だれかのためになれば幸いです。

Railsの複数選択フォームと保存まで

 

複数選択の入力フォーム

<div class="field">
   <% qualification = ["保育士","助産師","医者"] %>
   <% qualification.each do |q| %><br>
      <%= f.check_box :qualification , {multiple: true},q,nil %>
      <%= f.label :qualification, q %>
   <% end %>
</div>   

コントローラーに書くストロングパラメータ。

params.require(:user).permit(:id,:email,:name,:experience,:description,:    phone,:qualification => [])

 

画像のキャッシュ?削除?するのにストロングパラメーターイジってたときもそうなんですが、今回もイジる項目を最後に持ってこないとエラーでます。なんでだろう。。。

Rails5のルーティングでエラー

Ambigous route definition. Both :path and the route path where specified as strings. (ArgumentError)

 

Rails5のルーティングでエラーがでたのでメモ。

Rails4まで

(config/routes.rb)

post "pay" => 'orders#pay' ,path: "/:id/pay"

で動いてましたが、Rails5では

post "/:id/pay" => 'orders#pay',as: "pay"

じゃないとエラーが出ます。

 

参考

https://github.com/rails/rails/pull/25693

RailsでCtoCサービスを作る

恐らく一番分かりやすいです。神さまです。

http://www.coma-tech.com/archives/223/

2年程前にこのサイトを見つけたときはココ以外でこういうリレーション?アソシエーションを扱った情報が(たぶん)ありませんでした。今でも助かっています。探すの大変なので自分用メモ。