ruby-on-rails - 无法将 current_user.name 作为注释的属性传递

标签 ruby-on-rails ruby comments

解决以下问题:

    <%= f.label :Commenter %><br>
    <%= f.text_field :commenter, :value => current_user.name %>

这适用于将用户名传递给评论者属性而无需输入 - 额外的好处是可以在必要时对其进行编辑!


我正在尝试让我的网站显示创建评论的用户的姓名。为此,我希望将评论者(评论的属性)指定为 current_user.name。

评论有属性 commenter、body 和 expdate。

是否可以通过表单将current_user.name传递给comment.create方法?

我已经试过了:

<div>
    <%= form_for([@project, @project.comments.build]) do |f| %>
        <br>

        **<%= @commenter = current_user.name %>**

        <%= f.label :Comment %><br>
        <%= f.text_area :body %>
        <br>
        <%= f.label :'Expected Date' %><br>
        <%= f.date_select :expdate %>
        <br>
        <br>
        <%= f.submit %>
    <% end %>
</div>

我将评论者属性指定为 current_user。这不会将其传递给创建方法吗?

我也试过像这样在 comments_controller 中分配它:

def create
    **@comment.commenter = current_user.name**
    @project = Project.find(params[:project_id])
    @comment = @project.comments.create(comment_params)
    redirect_to project_path(@project)
end

但是我收到一个错误,提示 commenter 不是定义的方法。

我尝试过的两种方法都不允许我创建评论,有人知道我该怎么做吗? 非常感谢!

最佳答案

您可以在 Controller 的 create 方法中执行此操作:

@commenter = current_user.name

就这么简单。如果您需要在您的 View 中访问评论者姓名,请将其添加到您的评论类中:

def commenter(user)
  user.name
end

那么在你看来:

<%= @comment.commenter(current_user) %>

如果您尝试设置@comment.commenter,则必须定义两个模型之间的关系。不确定您要完成什么,但可以在此处找到有关 Active Record 关联的更多信息:http://guides.rubyonrails.org/association_basics.html

关于ruby-on-rails - 无法将 current_user.name 作为注释的属性传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29067409/

相关文章:

java - 你如何在java中添加评论框?

ruby-on-rails - Rails 4:使用 RSpec 测试 rake 任务时的 PG::InFailedSqlTransaction

ruby-on-rails - Searchkick分页,限制和偏移问题,滑轨

ruby-on-rails - Rails 3 - 获取一个字段的完整错误消息

ruby - 使用 find_by_sql 复制包含和连接行为(单个查询建立关联)

javascript - 删除 PHP 中所有 REAL Javascript 注释

ruby-on-rails - Rails uniq 公共(public)事件

ruby-on-rails - Rails 迁移 - 寻找旧迁移的变化?

c++ - 编译存储在 Ruby 字符串中的 C++ 代码而不将其写入文件

php - 用于删除整个目录中起始字符和结束字符之间的所有文本的 Shell 脚本或命令