Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 轨道,复选框_Ruby On Rails_Checkbox - Fatal编程技术网

Ruby on rails 轨道,复选框

Ruby on rails 轨道,复选框,ruby-on-rails,checkbox,Ruby On Rails,Checkbox,我不知道如何返回选中的值。这是我的密码 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 'fo

我不知道如何返回选中的值。这是我的密码

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 %>


您好,您的问题似乎与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%>

为此,您需要遍历城市列表,并为每个城市添加一个名为“cities[]”的复选框标记

我通常将列表作为变量提供给视图中使用。在控制器中执行Database.find

<% for city in @cities %>
  <%= check_box_tag "cities[]", city.id %> <%= city.name %>
<% end %>

注意-如果未选中任何复选框,则不会为参数提交任何内容,即根本不会有“cities[]”参数。根据搜索逻辑,您可能需要添加此选项。如果是,请添加到表单中

<%= hidden-field_tag "cities[]", '' %>


或者您可以在控制器中处理它。

在控制器代码中放入调试器。检查参数时会发生什么情况?有什么类似于params[:cities]的吗?如果是这样,那里面有什么?

还有一件事,从视图向数据库发出请求是个坏主意。您应该在控制器内部执行此操作。我尝试从控制器向数据库发出请求,但出现了错误。我认为params[城市]有问题。每个城市都有。。结束,因为没有此选项,我可以选中复选框。要使params[:cties]可用,POST和GET请求之间没有任何区别。您必须从表单发送数据。params[:cities]有问题。每个都有| city |。。。结束,因为如果没有此选项,我可以选中复选框(但只能选中,不能获取参数)。错误是由于@cities变量为nil造成的。在控制器操作中创建@cities。
<% for city in @cities %>
  <%= check_box_tag "cities[]", city.id %> <%= city.name %>
<% end %>
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
<% for city in @cities %>
  <%= check_box_tag "cities[]", city.id %> <%= city.name %>
<% end %>
<%= hidden-field_tag "cities[]", '' %>