我在一个简单的动作中遇到了一些问题。为了解释上下文,我正在创建一个新的pin,在这里我们可以从user表中标记绘画的艺术家(:pin_maker)。唯一的条件是用户当前是艺术家,一切看起来都很好,但当我运行create函数时,它不会保存我的艺术家选择(或:pin maker)
我的代码:
艺术家的范围=
scope :artist, -> { where(artist: true) }
新pin(视图)=
<div class="form-group">
<%= f.collection_select(:pin_maker, @users, :id, :pseudo, { }, {:multiple => true}) %>
控制器引脚=
class PinsController < ApplicationController
before_action :authenticate_user!
before_action :find_pin, only: [:show, :edit, :update, :destroy, :upvote, :downvote]
def index
@pins = Pin.all.order("created_at DESC")
end
def show
end
def new
@pin = Pin.new
@users = User.all.artist
end
def create
@pin = current_user.pins.build(pin_params)
if @pin.save
redirect_to @pin, notice: "successfully created!"
else
render 'new'
end
end
def edit
end
def update
if @pin.update(pin_params)
redirect_to @pin, notice: "successfully updated !"
else
render 'edit'
end
end
def destroy
@pin.destroy
redirect_to root_path
end
def upvote
@pin.upvote_from current_user
redirect_to :back
end
def downvote
@pin.downvote_from current_user
redirect_to :back
end
private
def pin_params
params.require(:pin).permit(:title, :description, :image, :pin_maker)
end
def find_pin
@pin = Pin.find(params[:id])
end
end
所以如果你知道我应该改变什么来解决这个问题,我就来了!
暂无答案!
目前还没有任何答案,快来回答吧!