【问题标题】:Rails error in inline edit using gem 'best_in_place'使用 gem 'best_in_place' 进行内联编辑时出现 Rails 错误
【发布时间】:2021-04-29 08:34:10
【问题描述】:

我正在尝试在表格编辑中使用 gem 'best_in_place',但在使用时出错 在控制器中仅显示数据库中所有用户详细信息的索引方法。

错误:undefined method name' for "Rohit":String`

使用的代码:

      <% @user_record.each do |record| %>
        <tr>
          <td><%= best_in_place record.name, :name %></td>
        </tr>
      <% end %>

控制器代码:

    def index
      @user_record = MUser.search(params[:name],params[:gender])
    end
    
    def create
    end

【问题讨论】:

  • 我们需要更多的上下文。 record 来自哪里,因为现在它是 String,但您似乎暗示它应该是 MUser?请在 &lt;td&gt;&lt;%= best_in_place record.name, :name %&gt;&lt;/td&gt; 周围发布相关代码部分,其中声明了局部变量 record
  • @engineersmnky 先生,请检查,我有更新表体数据。

标签: ruby-on-rails rubygems ruby-on-rails-6


【解决方案1】:

正如我从docs 看到的,您传递给方法best_in_place 的第一个参数应该是一个对象record,第二个参数 - 您需要使用此gem 编辑的字段,在您的情况下是@987654324 @。 因此它将从record 中获得提供的字段name。 由于您自己调用了name,它会返回名称的实际值而不是整个对象record,然后尝试从导致此错误的值中获取名称。

所以你需要将该行更改为&lt;td&gt;&lt;%= best_in_place record, :name %&gt;&lt;/td&gt;

【讨论】:

  • 是的,我也检查了这个,它的工作,使用这个,我如何显示 db 值,它不能只使用 record 对象显示。
  • 我需要像record.name 这样的显示值,它从数据库中获取值并需要在表中编辑该值。
  • 如何从 db 中获取选项值,例如 &lt;td&gt;&lt;%= best_in_place record, :gender, type: :select, collection: MGender.all.map{ |i| [i.gender, i.id] }, include_blank: 'selcect option' %&gt;&lt;/td&gt; 它无法正常工作
  • 这段代码好像有错误。文档说您需要使用as: :select 而不是type: :select
  • &lt;% @user.each do |record| %&gt; &lt;td&gt;&lt;%= best_in_place record, :gender, :as =&gt; :select, :collection =&gt; (MUser.all.map{ |i| [i.id, i.gender]}) %&gt;&lt;/td&gt; &lt;% end %&gt; 我正在尝试显示选择字段选项数据,但它没有显示,默认显示像 - 这样的数据如何显示所有选项数据的当前值。
猜你喜欢
  • 2012-03-26
  • 2013-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-01
  • 2017-10-17
相关资源
最近更新 更多