У меня есть две модели: Boards
и Topics
. Я хочу, чтобы иметь возможность добавить Topics
в Boards
. Мои вложенные ресурсы:отсутствует или пустое значение
resources :boards do
resources :topics
end
Мой 'доски # шоу' действие:
def show
@board = Board.find(params[:id])
@new_topics = Topic.all
end
в котором перечислены все сообщения и имеет link_to
:
<ul>
<%@new_topics.each do |i|%>
<li><%=i.title%> <%=link_to "Add", board_topic_path(@board,i), :method=> :put%></li>
<%end%>
</ul>
Я также использую strong_params для мой Boards
и Topics
:
boards_controller:
def update
@board = Board.find(params[:board_id])
@topic = Topic.find(params[:id])
if @board.update(board_params)
flash[:notice] = "Added!"
@board.topics << @topic
redirect_to boards_path
else
flash[:alert] = "Problem!"
redirect_to boards_path
end
end
...
private
def board_params
params.require(:board).permit(:name,:description)
end
topics_controller:
...
private
def topic_params
params.require(:topic).permit(:title,:body,:user_id)
end
сообщение об ошибке я получаю: паров отсутствуют или значение пустое: тема.
Вся установка неправильная. Ваша ссылка с методом 'put' не проходит ни одного параметра запроса' topic'. Вот почему вы получаете эту ошибку. Кроме того, ссылка должна была быть с 'board_topic_path (@board, i)' вместо этого. Но все равно это не решит вашу проблему. Дизайн модели неправильный. Вы предполагаете в своих ресурсах, что темы относятся к доскам, но я вижу, что ваш контроллер загружает темы с помощью темы «Topic.all», что означает, что темы существуют сами по себе, и они не принадлежат к доскам. Вам нужно переосмыслить свой дизайн своим другом. –
Уже попытался заменить две переменные в link_to. Не помогло. В моем представлении 'controller # show' перечислены все темы как' Topic.all', и они существуют здесь, потому что я хочу видеть список всех тем и быть в состоянии добавить их в текущую плату, используя ' @ board.topics << @ topic', который запускается 'link_to'. Каково было бы ваше предложение? –