Я пытаюсь научиться использовать Acts as Tagable On gem с Rails 5.
Я использую простую форму для форм. Я думаю, что часть проблемы возникает из-за отсутствия связи моделей между предложением и randd_fields.
У меня есть модели под названием Proposal и Randd::Field. Я пытаюсь пометить предложения тегами, которые являются атрибутом :title таблицы Randd::Field.
В моих моделях есть:
Предложение
class Proposal < ApplicationRecord
acts_as_taggable_on :randd_maturities, :randd_fields, :randd_purposes, :randd_activities
# acts_as_taggable
# acts_as_taggable_on :skills, :interests
Рэндд:: Поле
(без связи с предложением).
Помощник по предложениям
module ProposalsHelper
include ActsAsTaggableOn::TagsHelper
В моей форме предложения я пытаюсь добавить теги:
<%#= f.text_field :randd_field_list, input_type: "textbox", name:"proposal[randd_field_list][]", html_options: { style: 'width: 100%' } %>
<%= f.collection_select :randd_field_list, Randd::Field.order(:title), :id, :title, {}, {multiple: true} %>
Первое поле ввода комментируемой формы позволяет мне ввести тег. Однако теги являются текстовыми, и я могу написать все, что захочу. Это не то, чего я хочу. Я хочу, чтобы выбор тегов был атрибутом :title, определенным в моей модели Randd::Field.
Второй вариант, который я попробовал ниже, создает список, но когда я пытаюсь сохранить его как randd_field_list в модели предложения, он сохраняет атрибут :id из таблицы Randd::Field вместо :title.
Когда я пытаюсь удалить компонент :id из строки ввода формы, я получаю сообщение об ошибке:
{} is not a symbol nor a string
Когда я затем пытаюсь удалить {} из строки ввода формы, я получаю сообщение об ошибке:
{multiple: true} is not a symbol nor a string
Может ли кто-нибудь увидеть, как использовать Acts as Tagable On gem, чтобы теги были предопределенными атрибутами заголовков из модели, которая служит в качестве объекта тегов? Мне не нужны теги произвольной формы.
Контроллер предложения имеет:
def proposal_params
params.require(:proposal).permit(:title, :description, :trl_id, randd_maturities_list: [], randd_field_list: [], randd_purposes_list: [], randd_activities_list: [],
Processing by ProposalsController#update as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"Cy
затем опуститесь в этом блоке, это выбор, который я сделал в форме:
"randd_field_list"=>"Aerospace Structures",
Затем в конце этого блока:
Unpermitted parameters: randd_maturity_list, randd_field_list
(0.1ms) BEGIN
Я пробовал каждый из них - ни один из них не работает.
<%#= f.text_field :randd_field_list, input_type: "textbox", name:"proposal[randd_field_list][]", html_options: { style: 'width: 100%' } %>
<%#= f.collection_select :randd_field_list, Randd::Field.order(:title), :title, :title, input_html: { multiple: true } %>
<%#= f.input 'randd_field_list',
options_from_collection_for_select(@randd_fields, :title, :title),
multiple: true %>
<%#= f.collection_select 'randd_field_list',
options_from_collection_for_select(@randd_fields, :title, :title),
multiple: true %>
<%= f.input :randd_field_list,:collection => @randd_fields,:label_method => :title,:value_method => :title,:label => "Fields" ,:include_blank => false, :multiple => true %>
Верхний работает для присвоения значений randd_field_list, но он не позволяет использовать мои предопределенные атрибуты :title в таблице Randd::Field для использования в качестве тегов.
Остальные попытки дают ошибку недопустимого параметра, когда я пытаюсь сохранить форму.