从 rails HTML 视图到控制器再到 erb 获取值



我正在尝试从控制器的HTML选择输入中获取值,以便我可以在条件erb代码段中使用它

这是下拉菜单的 html 代码段

<select id="select" name="parish" class="form-control" onchange="choice(this.value)">
  <option value="">--Select value--</option>
  <option value="test">test</option>
  <option value="two">2</option> 
</select>

我被告知使用 AJAX 来传递值

function choice(value) {
  console.log(value)
  $.ajax({
    url: '/tickets/index',
    type: 'GET',
    data: {
      parish: $('#select').val()
    }
    /*success:function() {
      body...
    }*/
  })
}

我的票务控制器看起来像这样:

def index
    @ticket = Ticket.all;
    @value = params[:parish]
    puts @value
end

这是条件erb,如您所见,它被设置为使用控制器中的变量,但它不起作用,但是如果我用硬编码字符串替换@value它就可以工作,puts @value在控制台中显示该值,因此它不为空。我做错了什么?

 <% @ticket.where(parish: @value).each do |ticket| %>

问题在于@value,而在于您在视图中使用的查询。此<% @ticket.where(parish: @value).each do |ticket| %>是错误的@ticket因为 ActiveRecord 集合而不是 ActiveRecord模型,因此它不起作用。你应该做

<% Ticket.where(parish: @value).each do |ticket| %>

但这不是在视图中进行查询的优雅方式,该查询将进行数据库调用,还要记住@value取决于我会做的params[:parish]

def index
  unless params[:parish].nil?
    @tickets = Ticket.where(parish: params[:parish])
  else
    @tickets = Ticket.all
  end
  respond_to do |format|
    format.html
    format.js
  end
end

并在视图中

<% @tickets.each do |ticket| %>

最新更新