質問編集履歴

1 htmlコードを変更しました。

yamamoto11081

yamamoto11081 score 16

2019/05/22 20:32  投稿

Rails ラジオボタンでDBに保存している画像から選択できるようにしたい
Rails DBに保存している画像を背景画像にする方法
### 前提・実現したいこと
Todoアプリの作成で、ユーザーが新しいTodoボードを作成する際、予めDBに保存してある画像一覧から背景画像を選択できるようにしたい。
DBに保存している画像一覧からユーザーが選んだ画像を背景画像に設定したい。
### 発生している問題・エラーメッセージ
新しいTodoボードの作成時に、form_forでradio_buttonを利用し画像を選択できるようにしたいが、画像が表示されない
新しいTodoボードの作成時に、ユーザーが一覧から選択した画像を背景に設定したいが、DBから画像urlを渡す記述方法がわかりません
画像はBackgroundsテーブルに保存しており、imageカラムにurlが入っています。
また、Boardテーブルにはbackground_idカラムがあります。  
### 該当のソースコード
```
board.rb
class Board < ApplicationRecord
 belongs_to :background
end
```
```
background.rb
class Background < ApplicationRecord
 has_many :boards
end
```
```
boards_controller.rb
html
class BoardsController < ApplicationController
 def new
   @board = Board.new
   @backgrounds = Background.all
 end
 def create
   @board = Board.create(board_params)
   redirect_to board_lists_path(@board)
 end
 private
 def board_params
   params.require(:board).permit(:name, :about, :deadline, :background_id)
 end
end
.board__body{ style: 'background-image: url(@board.background.image)'}
```
 
 
```  
/boards/new.html.haml  
 
.board__new  
 = render partial: 'board_form'  
```  
 
 
```  
/boards/_board_form.html.haml  
 
.board__form  
 = form_for @board do |f|  
   .form-group  
     = f.label :name, class: 'form-controll-label'  
     = f.text_field :name, class: 'form-controll'  
   .form-group  
     = f.label :about, class: 'form-controll-label'  
     = f.text_area :about, class: 'form-controll'  
   .form-group  
     = f.label :deadline, class: 'form-controll-label'  
     = f.date_select :deadline, class: 'form-controll'  
   .form-group  
   - @backgrounds.each do |background|  
     = f.label :background, image_tag(background.image), class: 'form-controll-label'  
     = f.radio_button :background_id, background.image  
   .form-group  
     = f.submit "Save", class: "btn btn-primary"  
 
 
```  
 
### 補足情報(FW/ツールのバージョンなど)
Rails 5.2.3
  • Ruby on Rails

    16483 questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る