开发者

Ruby on Rails - passing hashes

开发者 https://www.devze.com 2023-02-16 09:40 出处:网络
I have a piece of controller code where some values are calculated. The result is in the form of an array of hashes. This needs to get into a partial form somehow so that it may be retrieved later dur

I have a piece of controller code where some values are calculated. The result is in the form of an array of hashes. This needs to get into a partial form somehow so that it may be retrieved later during commit (which is through t开发者_StackOverflow中文版he Submit button).

The questions is how do we pass the array of hashes? thanks.


Is there a reason it has to be through the form? This is the type of thing I usually use the session for.

I can't really think of a nice way to do what you're asking with forms. I guess you could create hidden fields for each key in your hash in the form with hidden_field_tag as an alternative. Then you run into problems translating it (what if a key's value is an array or another hash?).

You could easily store the hash in the session and then on each page load, check to see if there is a hash where you expect it. On calculating values:

session[:expected_info] = results

And each page load, something like this:

if session.has_key?(:expected_info)
  results = session.delete(:expected_info)
  # you already calculated the results, just grab them and
  # do what you need to do
else
  # you don't have the expected info 
end


You should be able to pass it as a string to your partial:

[{}].inspect

and eval it when it is submitted back through the form:

eval("[{}]"))

but that would be really dirty…

0

精彩评论

暂无评论...
验证码 换一张
取 消