【问题标题】:rails, how to pass users id while on 'show' actionrails,如何在“显示”操作时传递用户 ID
【发布时间】:2012-04-21 20:15:03
【问题描述】:

我在用户个人资料上,即路径是...

http://localhost:3000/users/2

我有一个文本字段,因此当前用户(我)可以在他的个人资料页面上向用户 2 发送私人消息。

如何检索用户 ID 并将其传递到隐藏字段中?

<div><%= f.hidden_field :????, :value => ???? %></div>

谢谢。隐藏标签字段在表单中。如果有帮助,这里是表格

<%= form_for(current_user.microposts.build(params[:micropost])) do |f| %>
  <%= render 'shared/error_messages', object: f.object %>
  <div class="field">
    <%= f.text_area :content, placeholder: "Send a private message" %>
  </div>
  <div><%= f.hidden_field :private, :value => "true" %></div>

  <%= f.submit "Post", class: "btn btn-large btn-primary" %>
<% end %>

再次感谢

【问题讨论】:

    标签: ruby-on-rails forms params hidden-field


    【解决方案1】:

    我会尝试嵌套路由,例如

    resources :users do
      resources :microposts
    end
    

    然后使用

    <%= form_for([current_user, @micropost])  do |f| %>
    

    我尽量避免通常在 rails 中出现隐藏字段,这通常意味着我错过了约定。

    【讨论】:

      【解决方案2】:

      在您的控制器中,您将拥有:

      @user = User.find(params[:id])

      所以:

      &lt;div&gt;&lt;%= f.hidden_field :user_id, :value =&gt; @user.id %&gt;&lt;/div&gt;

      【讨论】:

      • 在我看来用户对象已经在 current_user 中可用,因此您可以避免在控制器中进行额外调用。
      • 他们在表演动作中,所以呼叫可能已经存在。他们想要的是他们所在的个人资料的用户,而不是 current_user。
      • hmmm 还有其他方法可以做到这一点吗?因为为了传递:user_id,我必须使:user_id attri_accessible,我听说这样做不是很安全。当它进入我的 Micropost 控制器中的创建操作时,是否有另一种方法可以让我当前正在查看的用户 id?
      猜你喜欢
      • 1970-01-01
      • 2022-11-24
      • 1970-01-01
      • 1970-01-01
      • 2019-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-04
      相关资源
      最近更新 更多