Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 将PORO从视图传递到控制器_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 将PORO从视图传递到控制器

Ruby on rails 将PORO从视图传递到控制器,ruby-on-rails,ruby,Ruby On Rails,Ruby,将视图中的普通旧Ruby对象传递给控制器方法的最佳方法是什么 它不是数据库中持久化的对象。我不想重构东西,只想知道传递这个对象的最佳方式 查看 link_to "activate", activate_apis_path(my_ip_instance: @my_ip), class: "btn btn-primary btn-xs" 控制器 @my_ip = params[:my_ip_instance] @my_ip只是一个字符串。。。想要整个物体吗 (Rails 4.2)通常最好的方法是

将视图中的普通旧Ruby对象传递给控制器方法的最佳方法是什么

它不是数据库中持久化的对象。我不想重构东西,只想知道传递这个对象的最佳方式

查看

link_to "activate", activate_apis_path(my_ip_instance: @my_ip), class: "btn btn-primary btn-xs"
控制器

@my_ip = params[:my_ip_instance]
@my_ip
只是一个字符串。。。想要整个物体吗


(Rails 4.2)

通常最好的方法是通过表单。考虑创建一个具有隐藏字段的窗体,用于所有的<代码> @ MyXIP<<代码>属性。

<%= form_tag activate_apis_path do %>
  <%= hidden_field_tag "my_ip_instance[foo]", @my_ip.foo %>
  <%= hidden_field_tag "my_ip_instance[tomato]", @my_ip.tomato %>
  <%= submit_tag "Activate", class: "btn btn-primary btn-xs" %>
<% end %>
要使这项工作适用于更复杂的对象,您需要将自己的序列化器/反序列化器逻辑写入类中,如中所述


通常最好的方法是通过表单。考虑创建一个具有隐藏字段的窗体,用于所有的<代码> @ MyXIP<<代码>属性。

<%= form_tag activate_apis_path do %>
  <%= hidden_field_tag "my_ip_instance[foo]", @my_ip.foo %>
  <%= hidden_field_tag "my_ip_instance[tomato]", @my_ip.tomato %>
  <%= submit_tag "Activate", class: "btn btn-primary btn-xs" %>
<% end %>
要使这项工作适用于更复杂的对象,您需要将自己的序列化器/反序列化器逻辑写入类中,如中所述


通常最好的方法是通过表单。考虑创建一个具有隐藏字段的窗体,用于所有的<代码> @ MyXIP<<代码>属性。

<%= form_tag activate_apis_path do %>
  <%= hidden_field_tag "my_ip_instance[foo]", @my_ip.foo %>
  <%= hidden_field_tag "my_ip_instance[tomato]", @my_ip.tomato %>
  <%= submit_tag "Activate", class: "btn btn-primary btn-xs" %>
<% end %>
要使这项工作适用于更复杂的对象,您需要将自己的序列化器/反序列化器逻辑写入类中,如中所述


通常最好的方法是通过表单。考虑创建一个具有隐藏字段的窗体,用于所有的<代码> @ MyXIP<<代码>属性。

<%= form_tag activate_apis_path do %>
  <%= hidden_field_tag "my_ip_instance[foo]", @my_ip.foo %>
  <%= hidden_field_tag "my_ip_instance[tomato]", @my_ip.tomato %>
  <%= submit_tag "Activate", class: "btn btn-primary btn-xs" %>
<% end %>
要使这项工作适用于更复杂的对象,您需要将自己的序列化器/反序列化器逻辑写入类中,如中所述


您基本上需要做的是序列化对象。Rails提供了内置选项来序列化对象和
Object.to\u query
,可用于转换为查询参数


但是,像这样传递一堆状态违反了rest,表明应用程序设计很差。如果是非持久化对象,则应在POST/PATCH请求中将其作为表单参数传递。在GET请求中,您应该努力从头部初始化所需的所有对象,从请求url和会话初始化参数。

您基本上需要做的是序列化对象。Rails提供了内置选项来序列化对象和
Object.to\u query
,可用于转换为查询参数


但是,像这样传递一堆状态违反了rest,表明应用程序设计很差。如果是非持久化对象,则应在POST/PATCH请求中将其作为表单参数传递。在GET请求中,您应该努力从头部初始化所需的所有对象,从请求url和会话初始化参数。

您基本上需要做的是序列化对象。Rails提供了内置选项来序列化对象和
Object.to\u query
,可用于转换为查询参数


但是,像这样传递一堆状态违反了rest,表明应用程序设计很差。如果是非持久化对象,则应在POST/PATCH请求中将其作为表单参数传递。在GET请求中,您应该努力从头部初始化所需的所有对象,从请求url和会话初始化参数。

您基本上需要做的是序列化对象。Rails提供了内置选项来序列化对象和
Object.to\u query
,可用于转换为查询参数



但是,像这样传递一堆状态违反了rest,表明应用程序设计很差。如果是非持久化对象,则应在POST/PATCH请求中将其作为表单参数传递。在GET请求中,您应该努力从头部初始化所有需要的对象,从请求url和会话初始化参数。

该对象非常复杂。无法创建一个表单来表示它。我看到要传递@my_ip的视图代码。你会在控制器中放置什么来实例化同一个对象?我建议阅读这篇文章,看看他们是如何处理
to_json
json_create
场景的。您是如何初始化对象的?我会初始化它-如果它不是REST资源,请不要通过HTTP传递它。你只是在打开一堆潜在的安全漏洞。@max给出了很好的建议,但这取决于你的情况。除非你更新你的问题以包含非常具体的信息,否则恐怕很难进一步提供帮助。首先,假设一个简单的对象,很难回答一个问题,然后收到一条评论说它是一个复杂的对象。帮助我们,帮助你!这个物体非常复杂。无法创建一个表单来表示它。我看到要传递@my_ip的视图代码。你会在控制器中放置什么来实例化同一个对象?我建议阅读这篇文章,看看他们是如何处理
to_json
json_create
场景的。您是如何初始化对象的?我会初始化它-如果它不是REST资源,请不要通过HTTP传递它。你只是在打开一堆潜在的安全漏洞。@max给出了很好的建议,但这取决于你的情况。除非你更新你的问题以包含非常具体的信息,否则恐怕很难进一步提供帮助。首先,假设一个简单的对象,很难回答一个问题,然后收到一条评论说它是一个复杂的对象。帮助我们,帮助你!这个物体非常复杂。无法创建一个表单来表示它。我看到要传递@my_ip的视图代码。你会在控制器中放置什么来实例化同一个对象?我建议阅读这篇文章,看看他们是如何处理
to_json
json_create
场景的。您是如何初始化对象的?我会初始化它-如果它不是REST资源,请不要通过HTTP传递它。你只是在打开一堆潜在的安全漏洞。@max给出了很好的建议,但确实是这样