【问题标题】:How to get a a selected option from HTML <select> to a POST request in Sinatra如何从 HTML <select> 中获取选定选项到 Sinatra 中的 POST 请求
【发布时间】:2014-02-10 04:13:14
【问题描述】:

如何从 HTML 选择选项属性中获取选定选项到 POST 请求?所以

<form method="post" action="new_choice/:pick_an_order/:pick_a_letter">

<select name="pick_an_order">
   <option>First</option>
   <option>Second</option>
   <option>Third</option>
 </select>

<select name="pick_a_letter">
   <option>A</option>
   <option>B</option>
   <option>C</option>
 </select>

例如,如果用户从每个选项中选择第一个选项,即“First”和“A”。现在我有:

post 'new_choice/:pick_an_order/:pick_a_letter' do
    pick_an_order = params[:pick_an_order]
    pick_a_letter = params[:pick_a_letter]

    @your_choice = YourChoice.new(pick_an_order, pick_a_letter)
    redirect '/to_a_page'

end

但由于某种原因,它没有保存到@your_choice。如何将所选属性直接发送到 POST 请求,以便将其保存到 @your_choice 对象?提前致谢!

【问题讨论】:

    标签: html ruby post sinatra erb


    【解决方案1】:

    你必须做出选择。要么在 Javascript 的帮助下修改 form 中的 action 属性的值,要么将资源的路由更改为 post 'new_choice' do 并将值作为 POST 参数发送。

    我会选择第二个,因为目前它看起来更合乎逻辑:

    <form method="post" action="/new_choice">
    
    <select name="pick_an_order">
      <option value="First">First</option>
      <option value="Second">Second</option>
      <option value="Third">Third</option>
    </select>
    
    <select name="pick_a_letter">
      <option value="A">A</option>
      <option value="B">B</option>
      <option value="C">C</option>
    </select>
    

    请注意,您必须为每个option 指定value 属性,这是发送的实际值(无论标签内的文本是针对用户的)。然后在 Sinatra:

    post '/new_choice' do
      pick_an_order = params[:pick_an_order]
      pick_a_letter = params[:pick_a_letter]
    
      @your_choice = YourChoice.new(pick_an_order, pick_a_letter)
      redirect '/to_a_page'
    end
    

    【讨论】:

      【解决方案2】:

      我宁愿使用javascript提交表单,因为代码很简单:
      $(function() { $('#language').change(function() { this.form.submit(); }); }); 为选择标签分配一个id,在本例中为#language

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多