Разобрался. Оказалось, недостаточно передать параметры в view добавления нового автора. Необходимо было эти параметры пробросить дальше, так как при submit они автоматом не пробрасывались.
Решением оказалось добавление трёх hidden_field в /app/views/authors/new.html.erb в том случае, если в view были переданы параметры:
# /app/views/authors/new.html.erb
<%= form_for @author do |f| %>
<%= 'Добавление автора' %>
# поля для заполнения пользователем убраны для улучшения читабельности кода
<% if params[:journal_id] != nil %>
<%= hidden_field_tag(:journal_id, params[:journal_id]) %>
<%= hidden_field_tag(:publication_id, params[:publication_id]) %>
<%= hidden_field_tag(:article_id, params[:article_id]) %>
<% end %>
...
Код в authors_controller.rb потребовал лишь косметических изменений:
class AuthorsController < ApplicationController
# менялся только код для create
...
def create
@author = Author.create(author_params)
if params[:journal_id] != nil
@journal = Journal.find(params[:journal_id])
@publication = @journal.publications.find(params[:publication_id])
@article = @publication.articles.find(params[:article_id])
end
if @author.save
if params[:journal_id] != nil
redirect_to new_journal_publication_article_paternity_path(@journal, @publication, @article, :author_id => @author.id)
else
redirect_to authors_path
end
else
render 'new'
end
end
...
end
После этого всё заработало как часы: при добавлении пользователя через ссылку "Нет автора в списке" пользователю показывается окно добавления нового автора. После нажатия на Submit пользователь возвращается назад к выпадающему списку авторов. А чтобы ему не искать свежедобавленного автора, в список добавлено "selected: params[:author_id]", плюс в форму передаётся author_id. Ну а если автор добавлялся из окна со списком авторов, то после нажатия на Submit пользователь возвращался назад к списку.