ruby-on-rails - 如何将数组分解为字符串 MVC?

标签 ruby-on-rails arrays ruby session model-view-controller

如果 current_user提交一个习惯,他的日子:committed像这样工作:

  1. db t.text "committed", default: ["sun", "mon", "tue", "wed", "thu", "fri", "sat"], array: true
  2. habits/_form <%= f.collection_check_boxes :committed, Date::ABBR_DAYNAMES, :downcase, :to_s %> (user chooses days)
  3. habits_controller habit_params :committed => []
  4. habits/index <% habit.committed.map { |d| d.titleize[0,3] }.each do |title| %> <%= title %> <% end %>

如果 nil用户提交一个习惯(鼓励他在注册前创建一个),他的日子 :committed像这样工作:

  1. db t.text "committed", default: ["sun", "mon", "tue", "wed", "thu", "fri", "sat"], array: true
  2. habits/_form <%= f.collection_check_boxes :committed, Date::ABBR_DAYNAMES, :downcase, :to_s %> (user chooses days)
  3. *habits_controller session[:habit_committed] = [params["habit"]["committed"]]
  4. *users_controller committed = session.delete(:habit_committed) @user.habits.create(committed: committed)
  5. habits/index <% habit.committed.map { |d| d.titleize[0,3] }.each do |title| %> <%= title %> <% end %>

enter image description here

当这两个习惯首次提交时,终端看起来像这样:

Started POST "/habits" for 127.0.0.1 at 2015-08-11 13:15:40 -0400
Processing by HabitsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"EDxn180pxfaqNCBNtzxJd3Y0XHO5m9eURhj9WOf25Re64ed0f99HlIXIgHfNpyJIi1KD92SQ/QggcTCf7pZPHw==", "habit"=>{"committed"=>["sun", "mon", "tue", "wed", "thu", "fri", "sat", ""], "date_started(2i)"=>"8", "date_started(3i)"=>"11", "date_started(1i)"=>"2015", "trigger"=>"test", "action"=>"test", "target"=>"test", "reward"=>"test"}, "button"=>""}
Redirected to http://0.0.0.0:3000/valuation_signup
Completed 302 Found in 11ms (ActiveRecord: 0.0ms)

但它们的不同之处在于当用户完成注册时我看到终端得出这样的结论:["committed", "{{NULL}}"]["committed", "{NULL}"]["committed", "{}"] .

我尝试了多种方法,例如 .join , .split , .inspect , .map , .map(&:inspect).join(', ') , .map {|str| "\"#{str}\""}.join(',')但我猜我没有使用正确的混合物或格式。

抱歉 如果这个问题的布局看起来像 ransom注意。

第一次尝试

  1. Changed db to t.text "committed", default: "---\n- sun\n- mon\n- tue\n- wed\n- thu\n- fri\n- sat\n"
  2. habits.rb serialize :committed, Array
  3. habits/_form <%= f.collection_check_boxes :committed, Date::ABBR_DAYNAMES, :downcase, :to_s %> (user chooses days)
  4. habits_controller session[:habit_committed] = [params["habit"]["committed => []"]]
  5. *users_controller committed = session.delete(:habit_committed) @user.habits.create(committed: committed)
  6. habits/index <% habit.committed.map { |d| d.titleize[0,3] }.each do |title| %> <%= title %> <% end %>

这产生了:["committed", "---\n- \n"]

最佳答案

当您为 committed 设置 session 变量时,您将其设置为一个空数组,然后获取一个空数组作为值。

在您的日志中,params["habits"]["committed"] 的值已经是一个数组,因此无需重新解析它或将其嵌套在其他括号中

所以试一试:

habits_controller.rb session[:habit_committed] = params["habit"]["committed"].reject(&:empty?)

关于ruby-on-rails - 如何将数组分解为字符串 MVC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31978181/

相关文章:

javascript - 从 Dashing 中的小部件中提取数据

javascript - 在angularjs中调用json数组

ruby-on-rails - var_dump 并像 php 一样死去,在 ruby​​ on rails 中(在 ruby​​ on rails 中调试)

java - 我怎样才能得到一个按钮的数组#/使这个运行更有效

ruby - 如何仅将一个值的累加和添加到数组?

ruby - 如何找到正确的 Ruby 版本

ruby-on-rails - 如何在测试环境中为 Time 类未定义 'parse',而不是开发或生产环境?

ruby-on-rails - 使用 rbenv :/home/deploy/. rbenv/bin/rbenv 进行 capistrano 部署:没有这样的文件或目录

ruby-on-rails - 在以下 if 语句(Rails)中检查电子邮件是否已被接收?

php - 如何合并由php中的foreach循环生成的2个数组