Rails link_to链接填写页面上的表单

时间:2013-08-30 18:31:22

标签: ruby-on-rails ruby ruby-on-rails-4

Rails 4.0 Ruby 2.0

我正在尝试使用我已有的数据创建一个用当前页面填充textarea字段的链接。

这是我的视图代码(不起作用)

<% if feed_item.in_reply_to %>
<%= link_to "reply", mentions_path(:content => "@#{feed_item.user.username}") %>
<% end %>

我想要的只是@#{feed_item.user.username}被输入名为micropost_content

的文本区域

任何有助于我指向正确方向的帮助或其他事情都会很棒

- Visual C

编辑:

每个人似乎都对@感到困惑......我正在把@放在@页面上,因为我希望它在页面上显示为

@usernmae

由于用户名在数据库中存储为username

这不是因为我试图插入“实例变量”: - )

不能用Javascript完成吗?

这更好地解释了它:

enter image description here

3 个答案:

答案 0 :(得分:2)

要做的事情和检查(以防万一):

  • 检查mentions_path是否路由到正确的控制器和操作,您需要表单
  • 从已评估的字符串中删除@并检查控制器中的params[:content]值,它应包含正确的用户名
  • 如果您在视图中使用form_for帮助器
    • 然后将该内容分配给模型的相应字段,即构建
    • 的表单
  • 否则
    • 将该内容分配给@username等实例变量,然后使用text_area_tag :field_name, @username

好的,如果您需要在同一页面上执行此操作,请执行

之类的操作
$(document).ready -> 
  $("#reply_link_id").click ->
    username = $('#username_link_id').html()
    $('#textarea_id').val(username).focus()
    return false

答案 1 :(得分:2)

我通过这样做得到了我正在寻找的行为

<%= link_to "reply", '#', :onclick => "document.getElementById('micropost_content').value='@#{feed_item.user.username} ';return false;" %>

虽然现在我正在寻找一种方法将光标放在那里

答案 2 :(得分:0)

在新页面上,您可以检查传递的值是否存在并添加到要填充的字段的值