【问题标题】:Rails autocomplete textfield won't workRails 自动完成文本字段不起作用
【发布时间】:2015-10-04 04:44:38
【问题描述】:

按照 railscasts 的本指南在 collection_select 上设置自动完成功能。 https://www.youtube.com/watch?v=M7yhPlIehFA 在我的示例中,我正在尝试创建一个与游戏相关的聊天室。

型号

belongs_to :game
validates :game, presence: true

def game_name
    game.try(:name)
end

def game_name=(name)
    self.game = Game.where(name: name).first_or_create if name.present?
end

控制器

def create
    @room = current_user.chatrooms.build(room_params)

    if @room.save
        redirect_to @room
    else
        render 'new'
    end
end

def room_params
    params.require(:chatroom).permit(:title, :description, :game_id)
end

HTML

<%= simple_form_for @room do |f| %>
  <p class="ftitle">Chatroom title</p>
  <%= f.input :title, label: false %>
  <p class="ftitle">Chatroom description</p>
  <%= f.input :description, label: false %>
  <p class="ftitle">Select related game</p>
  <%= f.text_field :game_name, data: { autocomplete_source: Game.order(:name).map(&:name) } %>
  <%= f.button :submit %>
<% end %>

在我尝试创建一个附加游戏的聊天室之前,它工作正常。它不会将 game_id 作为游戏附加。不知道为什么。 谢谢。

【问题讨论】:

  • 你是如何创建聊天室的?你能添加那个代码吗?以及实际的控制器方法而不仅仅是强参数方法?
  • 添加了创建方法和表单。谢谢

标签: ruby-on-rails autocomplete


【解决方案1】:

尝试根据名称链接游戏似乎很脆弱,并且很容易被未来滥用。

但是,如果您确实想要这样做,请将 :game_name 添加到 room_params 中的 .permit 方法中。

在这里传递一个 ID 会比纯文本更健壮。

【讨论】:

    猜你喜欢
    • 2015-04-27
    • 1970-01-01
    • 1970-01-01
    • 2018-02-06
    • 2010-10-15
    相关资源
    最近更新 更多