Rails,复选框

Mar*_*nas 3 checkbox ruby-on-rails

我不知道如何返回选中的值.有我的代码

controller:

  def index

    // there I would like to get checked cities

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @cities }
    end

  end


viewer:

  <%= render 'form' %>


_form:

  <% for cities in Database.find(:all) %>
  <div>
    <%= check_box_tag cities.city1 %>
    <%= cities.city1 %>
  </div>
  <% end %>
Run Code Online (Sandbox Code Playgroud)

编辑

我试过了:

@cities = Database.find(:all)
params[:cities].each do |city|
  ...
end
Run Code Online (Sandbox Code Playgroud)

<% for city in @cities %>
<%= check_box_tag "cities[]", city.id %> <%= city.city1 %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

但得到了错误:

You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.each
Run Code Online (Sandbox Code Playgroud)

Boh*_*dan 5

嗨您的问题似乎与HABTM类似,通过复选框尝试

<%form_tag "some_action", :method => :post do %>
  <% Database.find(:all).each do |city| %>
    <div>
      <%= check_box_tag "cities[]",city.city1, :false %>
      <%= citiy.city1 %>
    </div>
  <% end %>
<%end%>
Run Code Online (Sandbox Code Playgroud)

和内部控制器

def some_action
  if !request.post?
    @cities = Database.find(:all)
    render 'view'
  else
    params[:cities].each do |city|
      ...
    end
    redirect_to view_path
  end
end
Run Code Online (Sandbox Code Playgroud)

  • 还有一件事是从视图向db发出请求是个坏主意你应该在控制器内部做这个 (2认同)