Ruby on rails Rails内联文本字段到操作

Ruby on rails Rails内联文本字段到操作,ruby-on-rails,forms,inline,Ruby On Rails,Forms,Inline,我是rails新手,有点被一个挑战困住了:我有一个带有“status”列的模型,可以是0或1。在索引视图中,我想放置一个直接链接,将状态从0更改为1,我可以这样做。我想做的是询问状态更改的原因(文本字段),并将该文本作为参数发送到相应的操作 有人能给我指出正确的方向吗? 谢谢 您可以使用form_标签表示相同的内容,使用单选按钮表示0或1,使用文本字段表示原因如果我理解正确,您的问题是“如何将表单数据与链接一起传递” 虽然您不能严格按照html实现来完成这项工作,但如果您这样做了,有几种方法可以

我是rails新手,有点被一个挑战困住了:我有一个带有“status”列的模型,可以是0或1。在索引视图中,我想放置一个直接链接,将状态从0更改为1,我可以这样做。我想做的是询问状态更改的原因(文本字段),并将该文本作为参数发送到相应的操作

有人能给我指出正确的方向吗?
谢谢

您可以使用form_标签表示相同的内容,使用单选按钮表示0或1,使用文本字段表示原因

如果我理解正确,您的问题是“如何将表单数据与链接一起传递”

虽然您不能严格按照html实现来完成这项工作,但如果您这样做了,有几种方法可以让您看到它

将按钮设置为链接样式 最简单的方法可能是使用表单,然后将按钮样式设置为链接。这样做的好处是它不需要任何javascript

首先设置一个表单:

<%= form_tag my_action_path do %>
  <%= text_field_tag :reason %>
  <%= submit_tag 'Do it', class: 'submit' %>
<% end

此实现将触发POST请求,这可能是您应该使用的,因为该操作意味着用户编写某些内容而不是读取它(如果您喜欢get请求,您仍然可以传递
method::get

将输入数据添加为查询字符串 您还可以在链接上钩住单击事件,并更改url以包含输入的内容。提供了以下html:

<%= text_field_tag :reason %>
<%= link_to 'do it', my_action_path %>
我不太喜欢这种解决方案,因为您可能会遇到url编码/长度问题,并且在表单之外添加输入是无效的html。如果您添加表单,那么您还必须处理它的提交事件(因为在文本字段中按“return/enter”键将提交表单)

使用表单并在单击链接时提交 您也可以使用常规表单,然后在单击链接时触发其提交:

<%= form_tag my_action_path do %>
  <%= text_field_tag :reason %>
  <%= link_to 'Do it', my_action_path %>
<% end %>
您可以使用显示输入对话框。
$('a').click(function(event){
  event.preventDefault(); # prevent link to be followed

  # compute an url adding the input content
  var new_url = $(this).attr('url') + '&?reason=' + $('input').val();

  # redirect user to that url
  window.location.href = new_url;
});
<%= form_tag my_action_path do %>
  <%= text_field_tag :reason %>
  <%= link_to 'Do it', my_action_path %>
<% end %>
$('a').click(function(event){
  event.preventDefault(); # do not follow link
  $('form').submit(); # submit form instead
});