【问题标题】:Ruby Rails: Passing a text box value to the ControllerRuby Rails:将文本框值传递给控制器
【发布时间】:2013-02-11 16:47:25
【问题描述】:

在 Ruby Rails 中,我想显示一个文本框,您可以在其中输入值,旁边有一个按钮,用于根据您在文本框中键入的内容执行搜索。我的代码:

<%= number_field_tag :user_search_id, params[:user_search_id] %>

<%= button_to 'Search by user id', {:controller=>"posts", :action=>"search", :user_id => params[:user_search_id]} %>

但是,无论在文本框中输入什么内容,它都不会放在 params 哈希中,我最终什么也没传递给控制器​​。

这是控制器代码:

def search

@post = Post.find(params[:user_id])

  respond_to do |format|
    format.html { redirect_to posts_url }
    format.json { render json: @post }
  end

  #redirect_to posts_url

end

注意,我试图同时传递 :user_id 和 :user_search_id,但都没有正确传递。但是,如果我传递一个文字(数字 1),它会正确传递,所以看起来 :user_search_id 值永远不会与该键相关联。

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    你需要一个表格...

    <%= form_tag({:controller=>"posts", :action=>"search"}, method: :get) do %>
      <%= number_field_tag :user_search_id %>
      <%= submit_tag 'Search by user id', name: nil %>
    <% end %>
    

    在您的控制器中,您可以使用:

    params[:user_search_id]
    

    EDIT - 使用上述表格,您将能够访问控制器中的params[:user_search_id]。现在您可以使用where 找到正确的帖子。

    @post = Post.where(:id => params[:user_search_id])
    

    【讨论】:

    • 没有骰子 - 同样的问题,控制器看不到那个参数哈希标签。通过将其传递给局部变量来确认,该变量报告内容为零。我是否需要通过移动到新页面来注册文本框的内容才能使用它?
    • 你想在哪里使用params[:user_search_id]?它应该在控制器帖子,动作搜索中。请在您的问题中包含控制器。此外,您应该能够在 url 中看到搜索。
    • 使用 user_search_id 允许用户按键搜索。通过文字作品,我无法得到文本框中的内容。在我的原始帖子中附加了控制器代码。
    • 我已经编辑了我的答案,向您展示如何在您的控制器中使用 params[:user_search_id]。我希望它有所帮助。
    • @user2062016 如果答案解决了您的问题,您可以分享并接受答案吗?谢谢!
    猜你喜欢
    • 1970-01-01
    • 2012-05-05
    • 2019-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多