如何使用sinatra将在刷新时更改的现有变量传递给post方法中的参数

时间:2014-12-21 20:29:11

标签: ruby button sinatra erb params

我正在使用sinatra作为我的网络框架,现在我已经

<p><%= @sentence %></p>

<form action='/' method='POST'>

  <button type='submit'>Save Story</button>
</form>

在我的erb文件中。 @sentence的变量在刷新时更改。当我点击“保存故事”按钮时,我希望它在post方法中创建一个等于@sentence的参数,以便我可以将@sentence保存到主页面。无论如何没有javascript就可以做到这一点吗?

ANSWERED

我用过

`<div class="row">
  <form action='/' method='POST'>
    <input id="sentence" type="hidden" name="sentence" value= "<%= @sentence %>" >
    <button type='submit'>Save Story</button>
  </form>
</div>`

它仍然只在4页中的一页上取第一个字,但必须有其他东西在那里。

2 个答案:

答案 0 :(得分:1)

您需要创建一个隐藏的输入字段,其值设置为w.e @sentence is

<p><%= @sentence %></p>

<form action='/' method='POST'>
 <input type="hidden" name="sentence" value="<%= @sentence %>" />
 <button type='submit'>Save Story</button>
</form>

这将给表单传递一些你可以在其他地方发布的内容,希望有所帮助,只需将你的变量放在...所以并确保告诉它语言,这里是一个如何的PHP示例添加一个值的变量。

 value="<?php echo $state; ?>"

这里我基本上告诉浏览器在&#34;之间回显(打印)状态变量。和&#34;使用php start和end来启动语言并结束它,隐藏类型输入字段对用户是不可见的,他们无法编辑它,它可以用来传递信息的背景技巧,它充当文本字段。

有关隐藏字段的信息: http://www.blooberry.com/indexdot/html/tagpages/i/inputhidden.htm

当您选择答案时,请编辑主帖以显示答案和更新的代码,以便用户可以看到您决定使用的内容。

答案 1 :(得分:0)

在sinatra你可以这样做:

<p><%= @sentence %></p>

<form action='/' method='POST'>
 <input type="hidden" name="sentence" value="<%= @sentence %>" />
 <button type='submit'>Save Story</button>
</form>