Задать вопрос
Ответы пользователя по тегу Ruby on Rails
  • Как передать параметры в контроллер для перехода redirect_to по условию?

    @antooninc Автор вопроса
    Разобрался. Оказалось, недостаточно передать параметры в 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 пользователь возвращался назад к списку.
    Ответ написан
    Комментировать
  • Как правильно использовать хелперы в Ruby on Rails?

    @antooninc Автор вопроса
    О как, привык к Delphi, у которого можно между названием процедуры и передающимися переменными ставить сколько угодно пробелов. Премного благодарю за помощь, запомню.
    Ответ написан