【发布时间】:2014-05-14 06:52:35
【问题描述】:
我有以下代码(工作)来创建播放列表:
控制器:
def create
@playlist = current_user.playlists.build(playlist_params)
if @playlist.save
redirect_to root_url
else
redirect_to root_url
end
end
def destroy
end
private
def playlist_params
params.require(:playlist).permit(:content, :name)
end
查看:
<%= form_for(@user.playlists.create, remote:true) do |f| %>
<%= f.text_field :content, id: "playlistContent", :validate => true %>
<%= f.text_field :name, id: "playlistName", placeholder: "Enter Playlist Name", :validate => true %>
<%= f.submit "Save Playlist", id: "savePlaylist", remote:true %>
<% end %>
现在我希望允许用户将一首新歌添加到播放列表content。我正在使用预先输入的用户输入播放列表名称的方式,在选择名称后,它将使用播放列表 ID 填充隐藏的 ID 字段(如果有多个具有相同名称的播放列表)。如有必要,我将在此处包含完整的预输入代码。我正在尝试按照以下方式更新播放列表(基于这个较早的问题:Problems keeping an object in an array, Ruby issues and Rails issues)
我的主要问题是试图将用户选择的播放列表的 ID 传递给 rails 表单,(rails 是服务器端,并且没有像 jQuery 这样的客户端方法来获取文本字段值的能力,据我所知) . update_attribute 和update_column 方法似乎仅限于通过(name, value),我不知道如何通过ID,因此我可以将新歌曲推送到现有的播放列表content 数组。
【问题讨论】:
-
需要注意的一点:
create实际上创建了一条记录。您可能不希望在您的form_for中发生这种情况。 -
是的,对于我在控制器中的
def update,我有@playlist = Playlist.find(params[:id]),但是我选择了:id客户端,带有预输入+ JSON,并且我在传递ID 时遇到了困难进入form-for。我尝试将隐藏字段放在form_for助手之前,这样我可以将 ID 作为参数传递,但会出现各种错误(例如 2 的 0 参数,或找不到 ID=id)。
标签: jquery ruby-on-rails activerecord form-for update-attributes