从Sqlite3表的下拉框中通过续集传递值

问题描述 投票:0回答:1

我正在尝试创建一个表单,用户在其中提供专辑标题并从下拉框中选择艺术家姓名。问题是我不知道如何从下拉框中获取值。新专辑保存时没有任何artist_id。我正在使用Sqlite3和Sequel。

DB.create_table?(:artists) do
        primary_key :id
        String :name
    end
    DB.create_table?(:albums) do
        primary_key :id
        foreign_key :artist_id, :artists
        String :title
    end


class Album<Sequel::Model
  many_to_one :artist
end
class Artist<Sequel::Model
  one_to_many :albums
end

get '/albums/new' do
@album=Album.new
@artists=Artist.all
slim :new_album
end

post '/albums' do
album=Album.create(params[:album])
redirect to('/albums/#{album.id}')
end

我的瘦文件是

/new_album.slim

h1 Add A New Album
form method="POST" action="/albums"
  == slim :album_form



/album_form.slim

label for="title" Title:
input#title type="text" name="album[title]" value="#{@album.title}"
label Performed by:
select value="#{@album.artist_id}" 
  - if @artists.any?
    ul#artists
      [email protected] do |artist|
        <option name="song[artist_id]" value="#{artist.id}"> #{artist.name}</option>

input type="submit" value="Save Album"

下拉框已创建,但是我不知道如何将选择保存到数据库中。欢迎任何建议。

ruby sqlite drop-down-menu sequel slim-lang
1个回答
0
投票

通过更改此内容

select value="#{@album.artist_id}" 

至此

select name="album[artist_id]"

该值已传递到数据库

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.