Rails为项目数组生成表单

时间:2016-07-25 18:09:05

标签: ruby-on-rails

这里的总轨道数为n008。

我正在编写一个应用程序,我正在销售" space"从1个用户到另一个用户。

所以我的部分_spaces.html.erb中有一个空格数组,工作正常。我不希望每次都使用没有做任何事情的按钮打印出列表项,而是希望它能够捕获'单击按钮的数据,所以我可以在我的模型中使用它。

我尝试过使用form_for(无法找到对象)和form_tag,以及传统的HTML表单(导致安全问题),但我似乎无法解决问题。也许我错了?

<% Array(@spaces).each do |x| %>
  <% next if x.capacity == nil || x.capacity <= 0 %>
  <ul class = "all-list">
    <li><p>Address: <%= x.address %></p></li>
    <li><p>Capacity: <%= x.capacity %></p></li>
    <li><p>Garbage Day: <%= x.garbaje_day %></p></li>
    <button type="button" id="buy-spot">Buy the spot</button>
  </ul>
<% end %>

这是我的Spaces控制器

class SpacesController < ApplicationController
  def index
    @spaces = Space.all
    @user = current_user
    if request.xhr?
      @spaces.near([params[:latitude], params[:logitude]])
      render partial: 'spaces', layout: false
    else
      @spaces = Space.all
    end

  end

  def new
    @user = current_user
    @space = Space.new
  end

  def create
    @space = Space.new(space_params)
    #puts @space
    #debug(space_params)

    @space.user_id = params[:user_id]
    if @space.save
      redirect_to user_path(current_user) #need to go to the last space
    else
      render :new
    end
  end

  def update
    @user = User.find(params[:user_id])
    # update capacity user
    @space = @user.spaces.find(params[:id])
    @space.capacity = params[:space][:capacity].to_i
    if @space.save
      # redirect_to user_path(current_user)
      redirect_to user_spaces_path
    end

  end

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用button_to

<% @spaces.each do |x| %>
  ...
  <%= button_to 'Buy the spot', buy_space_path(x) %>
<% end %>

同样在路线中:

resources :spaces do
  post :buy, on: :member
end

在控制器中:

def buy
  @space = Space.find(params[:id])
  # then goes some logic
  redirect_to user_spaces_path
end