我需要从我创建的脚手架生成的表中获取单独的索引/视图。在这个视图中,我有大约一半的原始脚手架列,用户可以编辑和更新其中两个。我创建了一个非脚手架控制器来生成这个视图。所以,我的问题:
1)。是否有可能将支架和非支架资源组合成非支架部分形式?
2)。我可以使用编辑操作和部分来自非脚手架控制器并更新到脚手架表吗? 我想在生产中,这可能是某种授权系统?但是现在,我只是想找出可能性。我在非脚手架控制器中的视图/索引有效,但编辑按钮当然没有任何作用。我错过了什么吗?现在,我在Windows 7上使用Rails 3.0,如果这有任何区别。
部分路由:
<%= form_tag(:controller=> "ravs", :method=> "get", :action=> "edit", :class=> "_dec") %>
<div >
<%= submit_tag(:controller=> "achvrs", :method=> "put", :action=> "update") %>
</div>
<% end %>
这是我的routes.rb:
Effcnt::Application.routes.draw do
get "ravs/index"
get "ravs/edit"
get "ravs/_dec"
resources :achvrs
这是我的非脚手架控制器中的编辑操作:
def edit
@achvr = Achvr.find(params[:id])
end
答案 0 :(得分:0)
我认为您的代码无效。因为根据rails API(从rails2.3.x到3.2),&#34; submit_tag&#34;没有您提供的选项(
<%= submit_tag(:controller=> "achvrs", :method=> "put", :action=> "update") %>
),此标记支持的内容是:
:confirm => 'question?' - This will add a JavaScript confirm prompt with the question specified. If the user accepts, the form is processed normally, otherwise no action is taken.
:disabled - If true, the user will not be able to use this input.
:disable_with - Value of this parameter will be used as the value for a disabled version of the submit button when the form is submitted.
Any other key creates standard HTML options for the tag.
而且,我不认为您的工具代码有意义,表单只能提交给1个目标(some_controller#some_action),但是您似乎想要一次向2个动作提交表单?
所以,我认为你最好在Rails中编写你的代码&#39; MVC的方式:将您想要运行的代码组合成1个动作,例如:
def the_action_your_form_submitted_to
# previously it was called in your RESTful action
do_task_no.1
# previously it was called in your non-RESTful action
do_task_no.2
end
答案 1 :(得分:0)
如果我理解你的话,你希望能够在1个视图中编辑记录的2列。
这样的功能是什么?:
ravs#index
ravs#index
列出了所有Achvr记录ravs#edit
与记录相匹配的:id
:col1
和:col2
achvrs#update
在您ravs#edit
的视图中,您可以拥有此功能。像这样使用form_for
应该有效,因为@achvr
是Achvr
模型的一个实例。然后它会指向自己的控制器。
<%= form_for(@achvr, :html => {:class => '_dec'}) do |f| %>
<%= f.text_field :col1 %>
<%= f.text_field :col2 %>
<%= f.submit %>
<% end %>
在achvrs#update
操作中,您可以检查params
哈希的值。但是,脚手架更新方法应该正确更新。当您从ravs#edit
更新时,params
只会保留:col1
和:col2
最后一句话!这不是一种正确的方法。您可能希望拥有具有权限的用户模型。然后根据这些值过滤哪些值。