Как передать параметр в Ruby on Rails?

Есть у меня главная страница TODO приложения, на этой странице есть несколько списков с задачами(Projects). Внизу каждого листа есть форма для добавления новой задачи, мне нужно, при добавлении нового задание подхватывать project_id (именно того листа в котором я нажал на кнопку), и передавать в контроллер который создает новую задачу к этому листу.

UPD1
Понимаю что можно сделать с помощью jQuery, но не знаю как это реализовать в Rails приложении.

UPD2
Я новичек в Ruby on Rails, поэтому не пинайте сильно!

UPD3
вот мой todo_controller
class TodoController < ApplicationController
  def index
  	@projects = Project.order(:id)
  end

  def task_new
  	@task = Task.new
  end

  def task_create
  	@project = Project.first
  	@task = @project.tasks.create(name: params[:name], status: 'on')

    respond_to do |format|
      if @task.save
        format.html { redirect_to todo_path, notice: 'Task was successfully created.' }
        format.js
        format.json { render :show, status: :created, location: @task }
      else
        format.html { render :new }
        format.json { render json: @task.errors, status: :unprocessable_entity }
      end
    end
  end
end


Сейчас новые добавляются только к первому project'у

Вот мой app/views/todo/index.html.erb
<% @projects.each do |project| %>
  <div class='project'>
    <div class='project_title'>
      <%= image_tag('SVG/calendar.svg') %>
      <p><%= project.name %></p>
    </div>
    <div class='task_list'>
      <% project.tasks.each do |task| %>
        <div class='task'>
          <div class='task_status'>
          	<%= task.status %>
          </div>
          <div class='task_name'>
          	<%= task.name %>
          </div>
        </div>
      <% end %>        
    </div>
    <div class='task_form'>
  	  <%= form_tag do%>
   	    <div class='textfield'>
      	  <%= label_tag '' %>
      	  <%= text_field_tag :name, params[:name], :placeholder => 'Enter new task here...' %>
      	</div>
      	<div class='task_add_btn'>
      	  <%= submit_tag 'Add', remote: true %>
      	</div>
      <% end %>
    </div>
  </div>
<% end %>


Если что то вот ссылка на github
  • Вопрос задан
  • 6192 просмотра
Решения вопроса 1
viktorvsk
@viktorvsk
Как вы предполагаете, что б вам ответили не задав конкретный вопрос? Немного кода для ясности не помешало бы.

Прямой ответ на конкретно ваш текущий вопрос: способов много. Например, можно передать параметр get запросом (domain.com/controller/action?para1=value&param2=value. Можно использовать роутинговую систему рельс. Обозначив роут как resoursec :todos, например, у вас появляется, среди других, роут get 'todos/:id' => 'todos#show', так что если вы передадите юрл типа "domain.com/todos/5", то придет параметр id = 5 (params[:id] # 5)

Если формы создаете с помощью form_for и есть сущность Task, то должно автоматически понимать, какой action формы использовать. Если нет, то надо руками в экшене формы передавать значение листа

А вообще, код в студию и пробуйте конкретней задавать вопросы
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы